Rust 程序设计(第 2 版)
Jim Blandy, Jason Orendorff, Leonora F. S. Tindall
软件工程师
1469 人已学习
立即订阅
登录后,你可以任选4讲全文学习
推荐试读
换一换
课程目录
已完结/共 41 讲
时长 02:41
时长 06:30
时长 10:04
时长 01:05
时长 50:06
时长 31:35
时长 34:39
时长 29:11
时长 37:15
时长 23:44
时长 44:19
时长 29:54
时长 39:01
时长 01:38
时长 01:15
时长 00:37
Rust 程序设计(第 2 版)
15
15
1.0x
00:00/00:00
登录|注册

第 5 章 引用

图书馆(库)无法弥补个人(程序员)能力的不足。
——Mark Miller
迄今为止,我们看到的所有指针类型(无论是简单的 Box<T> 堆指针,还是 String 值和 Vec 值内部的指针)都是拥有型指针,这意味着当拥有者被丢弃时,它的引用目标也会随之消失。Rust 还有一种名为引用(reference)的非拥有型指针,这种指针对引用目标的生命周期毫无影响。
事实上,影响是反过来的:引用的生命周期绝不能超出其引用目标。你的代码必须遵循这样的规则,即任何引用的生命周期都不可能超出它指向的值。为了强调这一点,Rust 把创建对某个值的引用的操作称为借用(borrow)那个值:凡是借用,终须归还。
如果在读到“你的代码必须遵循这样的规则”这句话的时候不知道如何是好,那么你并非特例。引用本身确实没什么特别之处——说到底,它们只是地址而已。但用以让引用保持安全的规则,对 Rust 来说是一种创新,除了一些研究性语言,你不可能在其他编程语言中见到类似的规则。尽管这些规则是 Rust 中掌握起来最费心力的部分,但它们在防止经典的、常见的错误方面的覆盖度令人叹为观止,它们对多线程编程的影响也是革命性的。这又是 Rust 的“激进赌注”。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Rust编程语言中的引用是一种非拥有型指针,对引用目标的生命周期毫无影响。本文通过具体的示例和技术解释,生动地展示了Rust中引用的工作方式和其在编程中的重要性。文章介绍了共享引用和可变引用的区别,以及它们在编译期强制执行“多重读取”或“单一写入”规则的作用。此外,还强调了让共享和修改保持完全分离对于内存安全的重要性,并指出了引用在Rust中的革命性影响。通过对引用的赋值、对引用进行引用、比较引用等方面的讲解,读者可以更详细地了解引用的用法。文章还介绍了Rust编译器如何通过生命周期参数来确保引用的安全使用,以及如何找出并解决可能生成悬空引用的代码。总之,本文通过具体的示例和技术解释,生动地展示了Rust中引用的工作方式和其在编程中的重要性。文章内容深入浅出,适合对Rust编程语言感兴趣的读者阅读。文章还探讨了Rust的所有权模型和其对复杂对象关系的影响,强调了Rust在程序设计和架构上的独特之处,以及其对线程安全和高级架构设计的要求。通过对比Rust中的引用和C/C++中的指针,文章突出了Rust引用的严格规则和编译期检查的优势,为读者展现了Rust在内存安全和并发编程方面的优越性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 程序设计(第 2 版)》
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部