临时可变性

说明

有的时候我们需要准备和处理一些数据,当处理完之后就只会读取而不修改。这种情况可以变量重绑定将其改为不可变的。

也可以在代码块里将处理过程和重定义写在一起。

示例

要求向量在使用前必须排序。

用代码块:

  1. let data = {
  2. let mut data = get_vec();
  3. data.sort();
  4. data
  5. };
  6. // Here `data` is immutable.

用变量重绑定:

  1. let mut data = get_vec();
  2. data.sort();
  3. let data = data;
  4. // Here `data` is immutable.

优点

编译器可以确保你之后不会意外修改数据。

缺点

多增加了一些本不必要的代码,代码结构更复杂。