Rust入門シリーズの第2回です。Rustは変数の宣言と使用方法に特別な注意を払います — ここでのルールがRustの安全性を支えています。
変数はデフォルトで不変#
let name = "Ada";
name = "Grace"; // エラー: 不変の変数に2回代入できないrustこれは意図的です。不変のデータは推論しやすく、共有しても安全です。mutで可変にします:
let mut score = 10;
score += 5;rust実際に必要なときだけmutを使います。
型推論#
Rustは型を推論しますが、明示することもできます:
let count: u32 = 42;
let ratio: f64 = 3.14;
let name: &str = "Rust";
let done: bool = true;rustスカラー型#
| 型 | 値 |
|---|---|
| 整数 | i8..i128、u8..u128(符号付き/なし) |
| 浮動小数点数 | f32、f64 |
| ブール | bool |
| 文字 | char(Unicode、4バイト) |
デフォルトの整数型はi32、浮動小数点数はf64です:
let x = 5; // i32
let y = 2.5; // f64rustコンパウンド型#
タプルは任意の型の値をまとめます:
let point = (3, 5);
let (x, y) = point; // 分解
println!("{}", point.0); // 3rust配列は同じ型の値を固定長で保持します:
let primes = [2, 3, 5, 7, 11];
println!("{}", primes[0]); // 2rust定数#
constの値は常に不変で、型が既知でなければなりません:
const MAX_SPEED: u32 = 120;rustletと違い、constは任意のスコープで宣言でき、コンパイル時にインライン展開されます。
シャドーイング#
変数名を再利用して値を変換できます。新しい値が有効になるまで古い値は保持されます:
let x = 5;
let x = x + 1;rustシャドーイングで型も変更できます:
let label = "12"; // &str
let label = label.len(); // usizerust結論#
Rustの変数ルール — デフォルト不変、明示的なmut、シャドーイング — により、データフローが予測可能になります。シリーズ次回は制御フローです。