14-临时可变性

临时可变性 — Rust Design Patterns

译文 · 基于 Rust Design Patterns

原文链接: https://rust-unofficial.github.io/patterns/idioms/temporary-mutability.html

临时可变性

描述

常常需要准备并处理一些数据,但之后这些数据只会被查看、不会再被修改。把可变变量重新定义为不可变,可以把这一意图表达清楚。

既可以在嵌套块中处理数据,也可以通过重新绑定变量来做到。

示例

比方说,vector 在使用前必须先排序。

使用嵌套块:

let data = {
    let mut data = get_vec();
    data.sort();
    data
};

// 此处 `data` 是不可变的。

使用变量重新绑定:

let mut data = get_vec();
data.sort();
let data = data;

// 此处 `data` 是不可变的。

优点

编译器确保你不会在某个时间点之后意外修改数据。

缺点

嵌套块要求块体多一层缩进。还需要多一行从块中返回数据或重新定义变量。

最后修改 August 21, 2026: 更新 (76fc81a2e)