[Rust]指针

2020-01-28  本文已影响0人  Tsun424

Box<T>

与我们通常熟知的指针概念相同,是指向堆中数据的指针。Box<T>沿袭了Rust所有权机制:共享不可变,可变不同享,即, 同时只能存在一个可变引用或者多个不可变引用。

Rc<T>

Rc<T> 主要用于同一堆上所分配的数据区域需要有多个只读访问的情况,多个访问都对数据具有所有权

Cell<T>

也是指向堆中数据的指针,但与Box<T>不同,Cell<T>允许修改T,同时,Cell<T>支持多个借用修改T。

RefCell<T>

RefCell<T>去掉了T必须实现Copy trait的限制,不会在编译器检查,但运行时依然要保证同时只能有一个可变借用,否则线程崩溃。同时可以有多个不可变借用。

组合使用

Rc<T>和RefCell<T>可以组合使用,场景:同时存在多个不同所有者,每个所有者又可以随时修改其内容。

上一篇下一篇

猜你喜欢

热点阅读