先に宣言する
変数束縛を先に宣言し、後で初期化することは可能ですが、すべての変数束縛は使用される前に初期化されていなければなりません。初期化されていない変数束縛を使用すると未定義動作につながるため、コンパイラはその使用を禁止します。
関数内で変数束縛を宣言し、後で初期化することは一般的ではありません。 初期化が宣言から離れていると、読み手が初期化箇所を見つけるのがより難しくなります。 変数束縛は、その変数が使用される場所の近くで宣言して初期化するのが一般的です。
fn main() { // 変数束縛を宣言する let a_binding; { let x = 2; // 束縛を初期化する a_binding = x * x; } println!("a binding: {}", a_binding); let another_binding; // エラー!初期化されていない束縛の使用 println!("another binding: {}", another_binding); // FIXME ^ この行をコメントアウトする another_binding = 1; println!("another binding: {}", another_binding); }