⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Rust 智能指针入门

学习 Box、Rc 和 RefCell 智能指针的概念与使用场景 · 难度:入门 · +15XP

智能指针概述

智能指针是实现了 DerefDrop trait 的结构体,它们不仅像普通指针一样指向数据,还拥有额外的元数据和功能。Rust 标准库提供了多种智能指针,用于不同的内存管理需求。

Box<T> —— 堆分配

Box<T> 是最简单的智能指针,它将数据存储在堆上,栈上只保留指向堆的指针。适合以下场景:

fn main() {
    let b = Box::new(5);
    println!("b = {}", b); // 自动解引用
}

Rc<T> —— 引用计数

Rc<T> 允许多个所有者共享同一数据,通过引用计数管理生命周期。注意:Rc 只适用于单线程场景。

方法说明
Rc::new创建新实例,初始引用计数为1
Rc::clone增加引用计数(不深拷贝)
Rc::strong_count获取当前强引用数
use std::rc::Rc;

let a = Rc::new(5); let b = Rc::clone(&a); println!("引用计数: {}", Rc::strong_count(&a)); // 输出 2

RefCell<T> —— 内部可变性

RefCell<T> 在运行时检查借用规则,允许在不拥有可变引用的情况下修改数据。常与 Rc 组合使用。

练习提示: 尝试用 Rc<RefCell<i32>> 实现一个可被多个变量共享并修改的计数器。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 122 篇
0 完成
🔥 0