1. コメント

jsとかと同じ感じで良くある形

// これがコメントになります

2. 変数

変数(定数)の定義にはletを使います

letの後にmutをつけるとそれが変数になります

let単体だと定数です

let x = 1;
x = 2; //←これはエラーになる

let mut y = 1;
y = 2; //←これはOK

再定義することで完全に上書きすることができる(それまでの値は破棄される)

それをシャドーイングと呼ぶ

mutと違ってスコープ外から変に値が変更されないという嬉しいポイントがある

let x = 1;

let x = x + 1;

println!(x); // 2

{
  let x = x + 1;
  println!(x); // 3
}

println!(x); // 2

3. 定数

jsと同じ感じでconstを使って定義する

constには型を明示的に指定してあげる必要があるのに注意

const MAX_LENGTH: u32 = 100;

(慣習的に大文字スネークケースである(他の言語と一緒))

4. 不変変数と定数の違い

letで定義できる不変変数とconstで定義できる定数の違いは以下の通り (tsとかだとconstで表現して明示的に大文字スネークケースにして使い分けてるけど、rustだと用意されたもので使い分けれるのでいいね)

  1. 値が決まるタイミングが違う
  • 不変変数: 実行のタイミングで確定する
  • 定数: コンパイル時に確定する
  1. 型指定
  • 不変変数: 不要(コンパイラが勝手に推測してくれる)
  • 定数: 必須
  1. 再定義(シャドーイング)
  • 不変変数: できる
  • 定数: できない

参考