基本データ型

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

Scalar Types

  • 符号付き整数: i8, i16, i32, i64, i128, isize(ポインタのサイズ)
  • 符号無し整数: u8, u16, u32, u64, u128, usize(ポインタのサイズ)
  • 浮動小数点: f32, f64
  • char: 'a', 'α', '∞'などのUnicodeのスカラー
  • bool: trueまたはfalse
  • unit型: ()が唯一の値

Despite the value of a unit type being a tuple, it is not considered a compound type because it does not contain multiple values.

Compound Types

  • 配列: e.g. [1, 2, 3]など
  • タプル: e.g. (1, true)

変数は常に 型指定(type annotate)可能 です。数値型の場合はさらにサフィックスでの指定が可能です。指定しない場合デフォルトになります。例えば整数はi32が、浮動小数点はf64がデフォルトです。 Note that Rust can also infer types from context.

fn main() {
    // Variables can be type annotated.
    // 変数に型を指定
    let logical: bool = true;

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

    // Or a default will be used.
    // サフィックスを指定しない場合、デフォルトを選択
    let default_float   = 3.0; // `f64`
    let default_integer = 7;   // `i32`
    
    // A type can also be inferred from context 
    let mut inferred_type = 12; // Type i64 is inferred from another line
    inferred_type = 4294967296i64;
    
    // A mutable variable's value can be changed.
    let mut mutable = 12; // Mutable `i32`
                          // ミュータブルな `i32`.
    mutable = 21;
    
    // Error! The type of a variable can't be changed.
    // エラー! ミュータブルな変数でも型は不変
    mutable = true;
    
    // Variables can be overwritten with shadowing.
    let mutable = true;
}

参照

std ライブラリ, mut, inference, shadowing