型推論 - Rust By Example
Description: Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.

## 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

# 型推論

Rustの型推論エンジンはなかなか賢くできています。初期化の際に評価値の型をチェックするだけでなく、その後にどのような使われ方をしているかを見て推論します。以下がその例です。

    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);
    }

このように、変数の型アノテーションは必要ありません。これでコンパイラもプログラマもハッピーですね！