Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

型推論

型推論エンジンは非常に賢いです。初期化時に値式の型を見る だけではありません。その後その変数がどのように使われるかも見て、 その型を推論します。以下は型推論の高度な例です。

fn main() {
    // 注釈により、コンパイラは `elem` の型が u8 であることを知っています。
    let elem = 5u8;

    // 空のベクター(伸長可能な配列)を作成します。
    let mut vec = Vec::new();
    // この時点では、コンパイラは `vec` の正確な型を知りません。
    // 何らかの型のベクター(`Vec<_>`)であることだけを知っています。

    // `elem` をベクターに挿入します。
    vec.push(elem);
    // なるほど!これでコンパイラは `vec` が `u8` のベクター(`Vec<u8>`)であることを知ります。
    // TODO ^ `vec.push(elem)` の行をコメントアウトしてみましょう

    println!("{:?}", vec);
}

変数の型注釈は必要なく、コンパイラも満足し、プログラマーも満足です!