Rust 智能指针:超能容器
智能指针是行为像指针的数据结构,但拥有额外的元数据和功能。
📦 Box<T>
最简单的智能指针,允许你在堆上存储数据。用于在编译时不知道大小的类型。
fn main() {
let b = Box::new(5);
println!("b = {}", b);
}
🤝 Rc<T> (引用计数)
Rc (Reference Counting) 允许一个值有多个所有者。当引用计数为 0 时才清理。
use std::rc::Rc;
fn main() {
let a = Rc::new(String::from("尚方宝剑"));
let b = Rc::clone(&a); // 计数 +1
let c = Rc::clone(&a); // 计数 +1
println!("引用计数: {}", Rc::strong_count(&a)); // 3
}
👓 RefCell<T> (内部可变性)
允许你在不可变引用中修改数据(绕过编译时借用检查,改为运行时检查)。
use std::cell::RefCell;
fn main() {
let x = RefCell::new(5);
// 即使 x 是不可变的,我们也可以修改里面的值
*x.borrow_mut() += 1;
println!("x = {:?}", x);
}