フリーズ

データが同じ名前の不変な変数に覆い隠された時、これもフリーズします。 フリーズされたデータは、不変な束縛がスコープを外れるまで、変更できません。

fn main() {
    let mut _mutable_integer = 7i32;

    {
        // 不変な`_mutable_integer`で覆い隠す
        let _mutable_integer = _mutable_integer;

        // エラー! `_mutable_integer`はこのスコープではフリーズされています。
        _mutable_integer = 50;
        // FIXME ^ この行をコメントアウトする

        // `_mutable_integer`がスコープを出る
    }

    // Ok! このスコープでは`_mutable_integer`はフリーズされていません。
    _mutable_integer = 3;
}