推論
型推論システムはとても賢いです。初期化時の式の値の型だけでなく、 その変数が後でどのように使われるかによって型を推論します。 ここに型推論についての高度な例があります。
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); }
型の注釈が必要なくなると、コンパイラもプログラマも幸せになれます!