變數用法與特征 變數綁定 let a = "hello world" 為何不用賦值而用綁定呢(其實你也可以稱之為賦值,但是綁定的含義更清晰準確)?這裡就涉及 Rust 最核心的原則——所有權,簡單來講,任何記憶體對象都是有主人的,而且一般情況下完全屬於它的主人,綁定就是把這個對象綁定給一個變數,讓這個 ...
變數用法與特征
變數綁定
let a = "hello world"
為何不用賦值而用綁定呢(其實你也可以稱之為賦值,但是綁定的含義更清晰準確)?這裡就涉及 Rust 最核心的原則——所有權,簡單來講,任何記憶體對象都是有主人的,而且一般情況下完全屬於它的主人,綁定就是把這個對象綁定給一個變數,讓這個變數成為它的主人(聰明的讀者應該能猜到,在這種情況下,該對象之前的主人就會喪失對該對象的所有權),像極了我們的現實世界,不是嗎?
變數可變性
Rust 的變數在預設情況下是不可變的。可以通過 mut
關鍵字讓變數變為可變的,讓設計更靈活。
let mut a = 123;
使用下劃線開頭忽略未使用的變數
如果你創建了一個變數卻不在任何地方使用它,Rust 通常會給你一個警告,因為這可能會是BUG。但是有時創建一個不會被使用的變數是有用的,比如你正在設計原型或剛剛開始一個項目。這時你希望告訴 Rust 不要警告未使用的變數,為此可以用下劃線作為變數名的開頭
let _x = 5;
變數解構
let
表達式不僅僅用於變數的綁定,還能進行複雜變數的解構:從一個相對複雜的變數中,匹配出該變數的一部分內容:
let (a, mut b): (bool,bool) = (true, false);
變數和常量之間的差異
常量(constant)與不可變變數一樣,常量也是綁定到一個常量名且不允許更改的值,但是常量和變數之間存在一些差異:
- 常量不允許使用
mut
。常量不僅僅預設不可變,而且自始至終不可變,因為常量在編譯完成後,已經確定它的值。 - 常量使用
const
關鍵字而不是let
關鍵字來聲明,並且值的類型必須標註。