基本データ型

Rustは様々な基本データ型の使用をサポートしています。以下がその例です。

スカラー型

  • 符号付き整数:i8, i16, i32, i64, i128, isize(ポインタのサイズ)
  • 符号無し整数:u8, u16, u32, u64, u128, usize(ポインタのサイズ)
  • 浮動小数点数:f32, f64
  • char'a', 'α', '∞'などのUnicodeのスカラー値(それぞれ4バイト)
  • booltrueまたはfalse
  • ユニット型 ():唯一の値として空のタプル()を持つ

ユニット型はその値がタプルですが、複合型とはみなされません。内部に複数の値を含んでいるわけではないからです。

複合型

  • 配列: 例えば[1, 2, 3]
  • タプル:例えば(1, true)

変数は常に 型指定 できます。数値型の場合はさらにサフィックスでの指定も可能です。指定しない場合デフォルトになります。整数はi32が、浮動小数点はf64がデフォルトです。また、Rustは文脈から型を推論することもできます。

fn main() {
    // 変数に型を指定。
    let logical: bool = true;

    let a_float: f64 = 1.0;  // 通常の型指定
    let an_integer   = 5i32; // サフィックスによる型指定

    // サフィックスを指定しない場合、デフォルトを選択。
    let default_float   = 3.0; // `f64`
    let default_integer = 7;   // `i32`

    // 型を文脈から推論することも可能。
    let mut inferred_type = 12; // 型 i64 は次行の内容に基づいて推論。
    inferred_type = 4294967296i64;

    // ミュータブルな変数は値を変更できます。
    let mut mutable = 12; // ミュータブルな`i32`
    mutable = 21;

    // エラー!ミュータブルな変数でも型は不変。
    mutable = true;

    // 変数はシャドーイングによって上書きできます。
    let mutable = true;

    /* Compound types - Array and Tuple */

    // Array signature consists of Type T and length as [T; length].
    let my_array: [i32; 5] = [1, 2, 3, 4, 5];

    // Tuple is a collection of values of different types 
    // and is constructed using parentheses ().
    let my_tuple = (5u32, 1u8, true, -5.04f32);
}

参照

std ライブラリ, mut, 型推論, シャドーイング