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だと用意されたもので使い分けれるのでいいね)
- 値が決まるタイミングが違う
- 不変変数: 実行のタイミングで確定する
- 定数: コンパイル時に確定する
- 型指定
- 不変変数: 不要(コンパイラが勝手に推測してくれる)
- 定数: 必須
- 再定義(シャドーイング)
- 不変変数: できる
- 定数: できない