什么是Rc

reference counting 引用计数器

可以记录一个数据被引用的次数,通过记录测试来确定改数据是否被使用,

为0的时候被清理释放。

RC指向同一个堆内容 等于是浅拷贝

  1. use std::rc::Rc;
  2. fn main() {
  3. let a = Rc::new(String::from("hello,world"));
  4. let b = Rc::clone(&a);//通过rc colone 指向同一个堆内容
  5. assert_eq!(2, Rc::strong_count(&a));
  6. assert_eq!(Rc::strong_count(&a), Rc::strong_count(&b));
  7. }

不可变引用

Rc 是指向底层数据的不可变引用,不能通过Rc来修改数据.

Rc 总结

  • Rc是不可变引用,你无法修改它指向的值,只能进行读取 如果需要修改,要配个cell refcell来使用
  • 一旦最后一个拥有者消失,则资源会被自动回收.
  • Rc只能用于同一个线程内部
  • Rc是一个智能指针,实现了deref接口 会自动解引用