型推論
型推論エンジンは非常に賢いです。初期化時に値式の型を見る だけではありません。その後その変数がどのように使われるかも見て、 その型を推論します。以下は型推論の高度な例です。
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); }
変数の型注釈は必要なく、コンパイラも満足し、プログラマーも満足です!