第 22 章 不安全代码(1)
吉姆•布兰迪
无
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
Rust语言中的不安全代码特性允许程序员告知Rust:“我选择使用你无法保证安全的特性”,并通过标记块或函数为不安全来获得调用标准库中的unsafe函数、解引用不安全指针以及调用其他语言编写的函数等能力。不安全代码的使用使得Rust可以实现自身许多最基本的特性,如高效地管理缓冲区、与操作系统对话以及提供并发原语。文章还介绍了不安全因素的来源,以及如何使用不安全块来解锁额外的选项,如调用unsafe函数、解引用裸指针、访问union的字段、访问可变的static变量以及访问通过Rust的外部函数接口声明的函数和变量。通过不安全代码特性,程序员可以在遵守额外规则的前提下,实现更多底层的操作,但也需要自行承担遵守规则的责任,以避免未定义行为的发生。文章还通过一个示例展示了如何使用不安全操作实现了一个安全接口,并准备好仅依赖模块自己的代码而不必靠其用户的行为来满足它们的契约。同时,不安全函数的使用也被介绍,强调了标记函数为unsafe会警告其调用者,为避免未定义行为,该函数具有他们必须满足的契约。文章深入探讨了Rust语言中的不安全代码特性,以及如何在遵守额外规则的前提下实现更多底层的操作。文章还指出了不安全代码可能导致的未定义行为,以及如何在使用不安全特性时自行承担责任,同时强调了在可能的情况下创建不需要契约的安全接口。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 程序设计(第 2 版)》
《Rust 程序设计(第 2 版)》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论