Rust 中的不可变性:概念、实现与应用
1. 不可变性基础概述
在 Rust 中,存在一种特性允许在不可变容器内对数据进行修改,这就是内部可变性。可共享的可变容器在某些情况下会允许隐藏的可变性,不过在大多数情形下这并非问题。继承可变性和内部可变性的实际区别在于,前者由编译器强制实施,而后者在运行时强制实施。
一般来说,即使容器本身不可变, Cell 、 RefCell 或 OnceCell 内的值也可以选择可变。 Cell 与 RefCell 和 OnceCell 相比,稍微不那么复杂,因为它只能通过替换来实现可变性,不能直接修改 Cell 内的值,只能用新值替换。而 RefCell 和 OnceCell 允许获取其所持数据的可变引用。
Rust 的标准库没有专门为不可变性设计的数据结构,其数据结构通常是传统的可变数据结构。 Vec 和 HashMap 提供了多种可变访问方法,除了实现 Clone 特征外,在处理不可变数据方面的功能有限。在 Rust 中实现不可变性的基本模式包括两个步骤:
- 一个值声明并赋值后,不应原地修改。
- 如果要修改值,先复制它,然后修改副本。
2. Rust 不可变性基础回顾
通过代码示例回顾 Rust 中不可变性的基础知识很有必要
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



