本文へスキップ
BecomeCoder

Rustコース · 第1章 Rustをはじめる · レッスン3

データ型 ― スカラー型

ブラウザで完結

導入

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 / u6464ビットもっと大きな数
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 はデバッグビルドではこれを検知して実行時にパニック(強制停止)し、バグを見逃しません。

実際に動かしてみよう

下のエディタにRustを書いて「実行」を押すと、学習用シミュレータが println! の出力を表示します(本物のrustcではなく、教材の範囲を再現した軽量エンジンです)。struct・enum・match・トレイト・Vec/String/HashMap・Option/Result なども動きます。本文の例を書き換えて動かしてみましょう(所有権・借用チェッカーのコンパイルエラーは再現しないため、動きの確認用として使ってください)。

Rust — ブラウザ内で実行(学習用シミュレータ)

Rustの教材サブセットを動かす学習用シミュレータを読み込みます(本物のrustcではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。