Rust 基礎知識總結

ordi發表於2024-06-12

一、所有權規則:

  1. Rust中的每一個值都有一個所有者(Owner)
  2. 值在任一時刻有且只有一個所有者;
  3. 當所有者(變數)離開作用域時,其對應的值被丟棄;

二、Move(轉移)

  1. 原變數被賦值給其他變數以後,原變數不可用;編譯時已知大小的型別除外;如整型;
  2. Copy trait; 如果一個值實現了Copy trait; 那麼舊的變數在將其賦值給其他變數以後,仍然可用; 如 數字型別的變數;該規則,打破了所有權轉移規則;
  3. 編譯時已知大小的型別,都實現了Copy trait
  4. 編譯時已知大小的型別,其值儲存在棧上;
  5. 編譯時已知大小的型別,其值不會被Move;而是被Copy;故而原變數仍然可用;
  6. 編譯時不確定大小的型別,其值儲存在堆上;變數被賦給其它值後,原變數被不可用,被Move了;

三、所有權與函式

原理同變數賦值;

四、所有權與返回值

原來同變數賦值;

五、引用&與借用

  1. 引用不擁有值;故而,引用沒有所有權;
  2. 將建立一個引用的行為稱為借用(borrowing);
  3. 引用於可變引用與不可變引用
  4. 可以同時擁有多個不可變引用
  5. 只能有一個可變引用
  6. 有可變引用的同時,不能有不可變引用
  7. 懸垂引用,Rust 編譯器確保不會有懸垂引用;因為當你擁有一個資料的引用時;編譯器會確保資料不會在引用之前離開作用域;

六、slice

  1. slice 是一種不可變引用,故而其沒有所有權;

相關文章