功能数据结构(例如Haskell/Clojure/Scala中使用的Hash映射的Trie )依赖于底层数据结构中的大量共享。例如,如果我们在实现数据结构的树上通过路径复制实现的类似地图的数据类型实现insert。
考虑到这些数据结构在很大程度上依赖于共享(而不是基础价值的主要所有者),借款是否会妨碍这些结构的实现?
发布于 2016-01-17 13:31:21
简短回答:No。
较长的答覆:
锈蚀实际上对不可变的结构非常有效(例如,它比C的const提供了更多的保证)。
共享所有权没有问题(Rc/Arc),它具有一个真正不变的值,而且您可以很容易地多次借用到一个不变的结构中。借款时不能移动,但可以通过分发拥有代理(再次通过Rc或Arc )而不是引用来规避这一问题。
在Haskell中,锈蚀中可能没有的一个问题是将可变值与Cell或RefCell混合在一起,因为您可以创建循环,而这些循环将不会被收集,因为Rust没有GC。
https://stackoverflow.com/questions/34817204
复制相似问题