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

【Rust自学】15.0. 智能指针(序):什么是智能指针及Rust智能指针的特性

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)
请添加图片描述

15.0.1 指针的基本概念

指针是一个变量在内存中包含的是一个地址,指向另一个数据。

Rust 中最常见的指针是引用,使用&符号来表示,它会借用它指向的值。除了引用数据之外,它们没有任何特殊功能,也没有额外开销。

15.0.2 智能指针简介

智能指针的概念并非 Rust 独有:它起源于 C++,也存在于其他语言中。

Rust 的标准库中定义了各种智能指针,它们提供的功能超出了普通引用的能力。

智能指针的行为与指针类似,但提供了额外的元数据和功能。

15.0.3 智能指针与引用的区别

  • 引用只能借用数据,而智能指针通常拥有它指向的数据。
  • 智能指针具有额外的元数据和功能,例如自动清理和其他保障。

15.0.4 智能指针的常见类型

引用计数 (Reference Counting) 类型

引用计数智能指针通过记录所有者的数量,实现数据的多重持有。它会在没有使用者时自动清理数据。

标准库中的智能指针

在前文中,我们已经接触过一些智能指针,例如:

  • String:拥有一片内存区域并保障其数据是合法的 UTF-8 编码。
  • Vec<T>:提供容量等元数据并允许操作动态数组。

15.0.5 智能指针的实现

智能指针通常通过 struct 实现,但与普通结构体不同的是,它们一般会实现以下两个重要的 trait:

  • Deref:允许智能指针的实例表现得像一个引用,使程序可以同时支持引用和智能指针。
  • Drop:允许程序员自定义智能指针实例超出作用域时运行的清理代码。

在本章中,我们将讨论这两个 trait 并演示它们对智能指针的重要性。

15.0.6 本章内容

由于智能指针是一种常见的设计模式,本章将重点介绍标准库中最常用的智能指针类型:

  • Box<T>:用于支持多重所有权的引用计数类型。
  • Rc<T> ,一种支持多重所有权的引用计数类型
  • Ref<T>RefMut<T> ,通过RefCell<T>访问,这是一种在运行时而不是编译时强制执行借用规则的类型

此外,本章还将讨论以下主题:

  • 内部可变性模式 (Interior Mutability Pattern):一种允许不可变类型暴露可修改内部值的 API 的设计模式。
  • 引用循环 (Reference Cycles):它如何导致内存泄漏以及如何预防。

通过这些内容,您将对智能指针在 Rust 中的使用和设计模式有更深入的了解。


http://www.kler.cn/a/523906.html

相关文章:

  • XCTF - IllIntentions wp
  • 机器人抓取与操作概述(深蓝)——1
  • concurrent.futures.Future对象详解:利用线程池与进程池实现异步操作
  • STM32 LED呼吸灯
  • [MySQL]事务的理论、属性与常见操作
  • 三角形的最大周长(LeetCode 976)
  • 好用的AI/解析网站
  • 论文阅读的附录(八):Understanding Diffusion Models: A Unified Perspective(五):逐步加噪评分匹配
  • el-button 中icon在文字前和在文字后的写法
  • python:洛伦兹变换
  • 【2024年华为OD机试】 (C卷,100分)- 精准核酸检测(JavaScriptJava PythonC/C++)
  • 性能优化案例:通过合理设置spark.shuffle.memoryFraction参数的值来优化PySpark程序的性能
  • AIGC(生成式AI)试用 19 -- AI Agent
  • Vue 拦截监听原理
  • Langchain本地知识库部署
  • 特权模式docker逃逸
  • 如何解决跨浏览器兼容性问题
  • DFS深度优先搜索
  • 数据分析系列--②RapidMiner导入数据和存储过程
  • Node.js与MySQL模块结合:打造安全高效的用户信息管理系统
  • vscode插件汇总表-笔记
  • 装出字符串中国第一个匹配项的下标
  • UE求职Demo开发日志#14 把特效换成通过GC应用,同时完善每段的特效,增加显示物品信息的UI
  • 【落羽的落羽 数据结构篇】顺序表
  • OpenCV:形态学操作总结
  • IO进程寒假作业DAY6