当前位置: 首页 > news >正文

第 7 章:智能指针与高级所有权

第 7 章:智能指针与高级所有权

第 7 章:智能指针与高级所有权

7.1 Box<T>

Box 用于将数据分配到堆上,常用于递归类型。

let b = Box::new(5);
println!("{}", b);

7.2 Rc<T> 与共享所有权

Rc 提供单线程下的引用计数共享。适合树形结构等多个所有者场景。

use std::rc::Rc;
let a = Rc::new(String::from("hello"));
let b = Rc::clone(&a);

7.3 Arc<T> 与多线程共享

Arc 是线程安全版的 Rc,适用于多线程共享数据。

use std::sync::Arc;
let data = Arc::new(vec![1, 2, 3]);

7.4 RefCell<T> 与运行时借用检查

RefCell 提供运行时可变性检查,通常与 Rc 结合。

use std::cell::RefCell;
let data = RefCell::new(5);
*data.borrow_mut() += 1;

7.5 自定义智能指针

可以实现 DerefDrop

use std::ops::Deref;struct MyBox<T>(T);impl<T> Deref for MyBox<T> {type Target = T;fn deref(&self) -> &T {&self.0}
}
  • Deref 允许类型像引用一样使用
  • Drop 用于自定义清理逻辑

7.6 练习

  • 实现一个简单的 List 数据结构
  • 使用 Rc<RefCell<T>> 构建可变共享节点
  • 观察 Rc::strong_count 的变化
http://www.jsqmd.com/news/785549/

相关文章:

  • 孤骑day25
  • PowerMill宏编程避坑指南:从‘中文乱码’到‘变量作用域’,新手常踩的5个雷区
  • 全球AI伦理治理:UNESCO建议书背后的博弈与落地挑战
  • 从清洗到判定,西恩士AI液冷清洁度清洗机设备如何保证颗粒物无残留 - 工业干货社
  • AI驱动创业金融决策:文献计量揭示智能尽调与风险评估新范式
  • ComfyUI-Manager终极解决方案:5种方法彻底解决节点类型重复与组件冲突问题
  • 途游游戏AI产品经理面试题精选:10道高频考题+答案解析
  • 3分钟免费安装GitHub中文化插件:彻底告别英文界面困扰
  • 用kNN算法给你的约会数据“算个命”:从数据清洗、特征可视化到模型调优的完整实战
  • 用ESP32和L298N驱动四路TT马达:从接线混乱到方向统一的调试实战
  • STM32F103C8T6接DHT11传感器,数据怎么用ZigBee和ESP8266传上云?一份保姆级配置流程
  • IPv6技术演进与2005年关键发展解析
  • 3步打造个人游戏云:Sunshine让你的游戏无处不在
  • CANN驱动Ascend910B DCMI API文档
  • AI赋能非洲教育:自适应学习与语音技术破解STEM与语言障碍
  • AI赋能电气安全:DNN、CNN与SVM在电弧故障检测中的实战对比
  • Claude Code Plus:AI编程效率倍增器,代码交互与工作流优化实战
  • ATOMMIC:构建医学影像AI统一评估框架,破解模型性能可比性难题
  • CNN-LSTM混合网络在太阳耀斑AI预报中的工程实践
  • cocos2d-iPhone
  • python控制台同行覆盖显示文本,追加,换行的原理
  • SolidRun Bedrock R8000:工业级边缘AI计算机解析
  • CANN/sip Ctrmv矩阵向量乘法
  • 安全关键领域可解释AI:从技术原理到人机协同的实践指南
  • Python零基础如何快速调用大模型API,使用Taotoken实现OpenAI兼容接入
  • TPU-MLIR:从模型到芯片的AI编译器实战解析
  • CANN/CATLASS性能调优指南
  • Ubuntu20.04下PX4 v1.13与XTDrone联调避坑实录:从源码编译到Gazebo黑屏全解决
  • FPGA SPI驱动设计避坑指南:以DAC8830为例,聊聊时钟分频与数据对齐的那些事儿
  • 量子计算硬件封装技术:低温适配与材料挑战