在 rust 中,immutable 的数据结构的性质是非常好的。在大部分函数式语言中,都不允许存在 mutable 的数据。
如果要在不可变数据结构上进行修改,就需要 clone 一份出来。因此:
- 对于一些较大的结构,希望能够尽量复用
- 如果此时只有一份引用,则可以直接获取 mut 引用就地修改
所以有了 Persistent data structures 的概念:
- 每一次修改该结构,都会保留之前的版本
- 历史的版本可以被查询
- 如果历史版本的数据也支持修改,则称为 Full persistence,否则称为 Partial persistence