Rust智能指针详解
学习Box、Rc、RefCell等智能指针的原理与用法 · 难度:入门 · +15XP
智能指针概述
智能指针是Rust中一种特殊的数据结构,它不仅持有内存地址,还拥有所有权和额外的元数据。常见的智能指针包括Box<T>、Rc<T>、RefCell<T>等。
| 智能指针 | 特点 | 适用场景 |
|---|---|---|
| Box<T> | 堆上分配,单一所有权 | 递归类型、trait对象 |
| Rc<T> | 引用计数,共享所有权 | 多所有权场景 |
| RefCell<T> | 运行时借用检查 | 内部可变性 |
Box示例
fn main() {
let b = Box::new(5);
println!("b = {}", b); // 自动解引用
}Rc示例
use std::rc::Rc;
fn main() {
let a = Rc::new(5);
let b = Rc::clone(&a);
println!("引用计数: {}", Rc::strong_count(&a));
}
RefCell示例
use std::cell::RefCell;
fn main() {
let data = RefCell::new(10);
*data.borrow_mut() += 5;
println!("{:?}", data.borrow());
}
练习提示:尝试用Box实现一个递归的链表结构,或用RefCell修改不可变引用中的值。