冻结

当数据被相同的名称不变地绑定时,它还会冻结(freeze)。在不可变绑定超出作用域之前,无法修改已冻结的数据:

  1. fn main() {
  2. let mut _mutable_integer = 7i32;
  3. {
  4. // 被不可变的 `_mutable_integer` 遮蔽
  5. let _mutable_integer = _mutable_integer;
  6. // 报错!`_mutable_integer` 在本作用域被冻结
  7. _mutable_integer = 50;
  8. // 改正 ^ 注释掉上面这行
  9. // `_mutable_integer` 离开作用域
  10. }
  11. // 正常运行! `_mutable_integer` 在这个作用域没有冻结
  12. _mutable_integer = 3;
  13. }