临时可变性

说明

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

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

示例

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

用代码块:

let data = { let mut data = get_vec(); data.sort(); data }; // Here `data` is immutable.

用变量重绑定:

let mut data = get_vec(); data.sort(); let data = data; // Here `data` is immutable.

优点

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

缺点

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