在講引用以前先介紹一下全部權。python
Rust中每個值都有且僅有一個全部者,當其全部者離開做用域後,這個值就被丟棄。blog
let s1 = String::from("hello"); let s2 = s1;
上述代碼中s1將無效,由於改變量是存儲在堆上的。作用域
let mut s = String::from("hello"); let s1 = &mut s; let s2 = &mut s;
該代碼會編譯報錯。 編譯
由於在特定做用域中的特定數據有且只有一個可變引用。class
也不能在擁有不可變引用的同時擁有可變引用。變量
let mut str1 = String::from("hello"); let borr_str1 = &mut str1;
上述代碼中str1將不能再使用,由於str1也屬於可變引用。引用