【Rust问答】Box 和 Cell 之间有什么本质区别?

本文探讨了Rust中的Box和Cell之间的本质区别。Cell和RefCell支持内部可变性,允许在不变性上下文中修改值,而Box作为智能指针,仅提供所有权,并不具备此功能。Box的大小固定,常用于内存分配,如链表结构。与&引用相比,Box拥有数据,提供所有权,而&仅提供访问权。
摘要由CSDN通过智能技术生成

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 是一个指针,指向堆上的某个位置。和普通的指针不同的是,它独占了对数据的所有权。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值