临时可变性
说明
有的时候我们需要准备和处理一些数据,当处理完之后就只会读取而不修改。这种情况可以变量重绑定将其改为不可变的。
也可以在代码块里将处理过程和重定义写在一起。
示例
要求向量在使用前必须排序。
用代码块:
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.
优点
编译器可以确保你之后不会意外修改数据。
缺点
多增加了一些本不必要的代码,代码结构更复杂。