冻结

当数据被不可变地借用时,它还会冻结(freeze)。已冻结的数据无法通过原始 对象来修改,直到对这些数据的所有引用离开作用域为止。

  1. fn main() {
  2. let mut _mutable_integer = 7i32;
  3. {
  4. // 借用 `_mutable_integer`
  5. let large_integer = &_mutable_integer;
  6. // 报错!`_mutable_integer` 在本作用域被冻结
  7. _mutable_integer = 50;
  8. // 改正 ^ 注释掉此行
  9. println!("Immutably borrowed {}", large_integer);
  10. // `large_integer` 离开作用域
  11. }
  12. // 正常运行!`_mutable_integer` 在这作用域没有冻结
  13. _mutable_integer = 3;
  14. }