從今天開始會試著跟大家說明 Rust 的基本知識,只要能夠知道這些基本的話,相信就能掌握 Rust 了!應該吧?

宣告變數

首先會先從變數開始,在 Rust 宣告變數只要使用關鍵字 let,例如我們要宣告一個變數 count,並且給予值為 20 的話,就可以這樣寫:

1
2
3
fn main() {
let count = 20;
}

然後記得後面要加 ;,這邊有一個比較特別的是預設情況下,變數的值是不能再改變的。

型別

Rust 是一種強型別的語言,代表要指定變數的型別,然後在編譯時檢查型別是否正確。

那麼為什麼上面的例子沒有寫型別也可以正確編譯呢?

這是因為 Rust 有 type inference,也就是型別推斷的功能。
如果能夠判別型別的話,就不需要寫出來。
但如果要寫的話,就可以這樣寫:

1
let count: i32 = 20;

這一段的意思是,建立一個變數 count,綁定型別為 i32,而賦予的值為 20。關於型別的部分會在之後有完整的篇幅說明。

模式

Rust 提供了一種叫做模式 (Patterns) 的宣告變數技巧,使用方法如下:

1
let (x, y) = (10, 20)

這樣短短一行就可以同時宣告 xy,並且分別賦予值為 1020

可變性

在 Rust 的世界中,一旦幫變數賦予值的話,預設是不能再變更值的,這在其他的語言中非常少見,大多數的語言都是可以再次更改變數的值。

那麼為什麼 Rust 會這樣設計呢?

這邊又要提到 Rust 的特點:安全、併發和速度。

透過不可變的特性,增加了安全性和高併發,編譯器可以對不會改變的數據進行優化,也因此提高了速度。

但是變數如果不能變更值的話,那麼我大概就學到這裡就停止了(誤

接著來試試看執行以下的程式碼:

1
2
3
4
5
fn main() {
let count: i32 = 20;
count = 10;
println!("{}", count);
}

我們可以看到 VSCode 會先提示有紅色毛毛蟲,代表 Rust 跟你說目前有錯誤。
然後我們把滑鼠移過去,說不能重複給予值給不可變的變數,並且建議你可以將變數改綁定為可變。
https://ithelp.ithome.com.tw/upload/images/20220919/20120293G0Z4m3Uqst.png

從圖中的建議我們可以得知,只要在宣告變數時,在變數的前面加上關鍵字 mut,就可以讓變數改變值,所以可以改成這樣:

1
2
3
4
5
fn main() {
let mut count: i32 = 20;
count = 10;
println!("{}", count);
}

這樣執行出來的結果就會得到 10。

常數

雖然上面提到的不可變的變數可以綁定為可變,但 Rust 還有另一種宣告的方式是真正無法改變的,那就是常數。

宣告方式為使用關鍵字 const,常數名稱為大寫,並且使用 snake case 命名,然後加上型別,例如:

1
const MAX_COUNT: i32 = 10;

這樣就可以宣告一個常數了。

對了,還有一點小提醒,常數是沒辦法加上 mut 的,因為你既然都要使用常數了,也就代表不會有變更值的需求,所以你如果硬是要加上 mut 的話,還是會報錯給你看喔~