临时可变性
描述
通常在准备和处理一些数据后,数据只是被检查,而不会被修改。 这个意图可以通过重新定义可变变量为不可变的来明确。
这可以通过在嵌套块内处理数据或重新定义变量来实现。
例子
假定向量在使用前必须进行排序。
使用嵌套块:
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.
优势
由编译器来确保你不会在某个时间点之后意外地改变数据。
劣势
嵌套块需要额外缩进。 多写一行,从块中返回数据或重新定义变量。
Latest commit 2cd70a5 on 22 Jan 2021