値の凍結

データを同じ名前のイミュータブルな変数に束縛しなおすと、データは_凍結_されます。_凍結_したデータは、イミュータブルな束縛がスコープ外になるまで変更できません。

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