1 Rc(Reference Counted)
Rc(Reference Counted):是Rust标准库中,用于处理引用计数的智能指针。用来突破单一所有权的限制。其基本操作是通过clone()
增加引用计数。
Reference Counted // Rc会把对应的数据结构创建在堆上 // 堆上的数据才适合被用来在多个函数调用栈帧中共享 let i1 = Rc::new(1); // 复制引用计数 let i2 = i1.clone(); let i3 = i1.clone(); // 现在引用计数值为3 println!("{}", Rc::strong_count(&i1)); //3 println!("{}", Rc::strong_count(&i2)); //3 println!("{}", Rc::strong_count(&i3)); //3
2 内外可变性
2.1 外部可变性
简单来说,mut
关键字注明的可修改性就是外部可变性。
Rust中提供了两种引用/借用类型:
&
:只读引用,只读引用不允许修改被引用的对象。&mut
:可变引用,可变引用才有修改权限。
在编译阶段,Rust会检查,同一作用域内,对于某一个对象的引用,只允许存在两种情况:
要么只有一个活跃的可变引用,要么同时存在多个只读引用。
2.2 RefCell和内部可变性
RefCell,提供内部包装类型的内部可变性,用来突破mut变量才能被修改(外部可变性)的限制。
标签:解释,i1,println,引用,Rc,RefCell,可变性 From: https://www.cnblogs.com/imreW/p/18067028