什么是Rc
reference counting 引用计数器
可以记录一个数据被引用的次数,通过记录测试来确定改数据是否被使用,
为0的时候被清理释放。
RC指向同一个堆内容 等于是浅拷贝
use std::rc::Rc;
fn main() {
let a = Rc::new(String::from("hello,world"));
let b = Rc::clone(&a);//通过rc colone 指向同一个堆内容
assert_eq!(2, Rc::strong_count(&a));
assert_eq!(Rc::strong_count(&a), Rc::strong_count(&b));
}
不可变引用
Rc
Rc 总结
- Rc是不可变引用,你无法修改它指向的值,只能进行读取 如果需要修改,要配个cell refcell来使用
- 一旦最后一个拥有者消失,则资源会被自动回收.
- Rc只能用于同一个线程内部
- Rc
是一个智能指针,实现了deref接口 会自动解引用