導入
Rust は 静的型付けの言語で、すべての値に型があります。多くの場面で型は推論されるので毎回書く必要はありませんが、型を意識することは Rust ではとても大切です(特にメモリの話につながります)。まずは最も基本的な「スカラー型」——単一の値を表す型を見ましょう。
説明
スカラー型は「整数・浮動小数点数・真偽値・文字」の4種類です。
fn main() {
let age: i32 = 30; // 符号つき32ビット整数
let big: i64 = 9_000_000; // 64ビット整数(_ は桁区切り、無視される)
let pi: f64 = 3.14159; // 64ビット浮動小数点数
let is_ok: bool = true; // 真偽値
let letter: char = 'R'; // 文字('' で囲む。char は絵文字も入る)
println!("{age} {big} {pi} {is_ok} {letter}");
}
整数型は「ビット幅」と「符号の有無」で細かく分かれています。
| 型 | 意味 | 範囲の目安 |
|---|---|---|
i32 | 符号つき32ビット | 約 −21億 〜 +21億(整数の既定型) |
u32 | 符号なし32ビット | 0 〜 約42億 |
i64 / u64 | 64ビット | もっと大きな数 |
usize / isize | 環境依存(ポインタと同じ幅) | 添字やサイズに使う |
- 型注釈
: i32は省略できます。let age = 30;と書くと Rust は整数の既定型i32と推論します。 charは''(シングルクォート)、文字列は""(ダブルクォート)と区別します。- Rust の
charは1バイトではなく Unicode のスカラー値(4バイト)なので、'あ'や'🦀'も1つのcharです。
Rust が型に厳しいのは、後で学ぶメモリ管理のためでもあります。「この値が何バイトか」がコンパイル時に決まっていることが、安全で速い実行につながります。
試すには
let x = 255u8;(8ビット符号なし整数)に let y = x + 1; を足すと、u8 の最大値255を超えてオーバーフローします。Rust はデバッグビルドではこれを検知して実行時にパニック(強制停止)し、バグを見逃しません。