Box 和 Cell 之间的本质区别是什么?两者主要的应用场景为何?通过一些搜索和文档阅读,我了解到两者确实有很多不同点,但是我一直没有找到对于“本质区别”这个概念的合理解答。
一些参考:
https://rust.cc/article?id=37d1cb4f-5cc9-4adc-b41a-dbe4914bf4b5
https://www.reddit.com/r/rust/comments/4cvc3o/what_are_cell_and_refcell_used_for
https://users.rust-lang.org/t/confused-between-box-rc-cell-arc/10946/1
------
yuanyunchang 2020-01-17 08:49
Cell和RefCell是实现内部可变性的容器,在保持容器不被drop的情况下可以修改其中的值,而Box就做不到。
作者 JmPotato 2020-01-17 11:02
感谢回答,我昨天研究了一天这个问题,写了一篇文章来记录一下,欢迎帮忙纠错。https://ipotato.me/article/57
jmjoy 2020-01-17 12:14
不错!
yuanyunchang 2020-01-17 13:50
很多底层的东西都要用unsafe+指针,如果指针玩得溜也可以自己用unsafe整哈。
AlephAlpha 2020-01-17 14:56
Box
是一个指针,指向堆上的某个位置。和普通的指针不同的是,它独占了对数据的所有权。