2.1 共享只读数据单线程usestd::rc::Rc;fnmain(){letvRc::new(10);// 创建一个 Rc 指针初始引用计数为 1letv2Rc::clone(v);// 创建一个 Rc 指针引用计数增加 1推荐写法letv3v.clone();// 创建一个 Rc 指针引用计数增加 1// *v 是解引用操作类型是 i32letvalue:i32*v;println!(*v 的类型是 i32值: {},value);// v 是 Rci32 类型是智能指针// 但 Debug trait 会自动解引用打印内部值println!(v 的类型是 Rci32Debug 打印: {:?},v);println!(v2 的类型是 Rci32Debug 打印: {:?},v2);println!(v3 的类型是 Rci32Debug 打印: {:?},v3);println!(引用计数: {},Rc::strong_count(v));}2.2 构建递归数据结构如链表、树usestd::rc::Rc;#[derive(Debug)]enumList{Cons(i32,RcList),Nil,}usecrate::List::{Cons,Nil};fnmain(){letlist1Rc::new(Cons(1,Rc::new(Nil)));letlist2Cons(2,Rc::clone(list1));// 共享 list1 的所有权letlist3Cons(3,Rc::clone(list1));// 共享 list1 的所有权println!({:?},list2);println!({:?},list3);}