C++與Rust變數宣告的比較

熊皮皮發表於2018-11-13

文件列表見:Rust 移動端跨平臺複雜圖形渲染專案開發系列總結(目錄)

對於變數宣告,Rust預設不可變,需顯式加mut關鍵字才可變。C/C++預設可變,不可變需加const關鍵字。嚴格意義上,Rust的let語法屬於繫結,和C++的變數宣告存在很大區別。 為了降低從C++轉Rust的學習難度,有些知識點可以先套用,有更多瞭解後再深究。

C++示例:

int index = 100;
index = 200; // 編譯執行正常
複製程式碼

Rust示例:

let index = 100;
index = 200; // 編譯報錯
/********************************************/
// mut表示宣告一個可變繫結,之後active_index繫結新值
let mut active_index = 20; 
active_index = 30; // 編譯執行正常

// 加mut才允許後面向matched_names繫結的Vector繼續新增元素,否則編譯報錯
let mut matched_names = Vec::new();
matched_names.push("Mike");
matched_names.push("Michael");
matched_names.push("Jack");

{
  // let的另一種用法:重新繫結,
  // 允許同一個程式碼塊(block)中存在相同名稱的繫結,
  // 後面的繫結表示式自動遮蔽(Shadowing)前面的同名繫結,
  // 下面程式碼是合法的
  let object = String::from("hello");
  println!("{}", object);
  let object = 1000_000_u32;
  println!("{}", object);
}
複製程式碼

相關文章