Rust的安全性和稳健型
rust 安全性 稳健
2023-06-13 09:17:26 时间
Rust是围绕安全性和稳健性而设计的。也就是,安全代码是不使用unsafe关键字的代码,
声音代码是不会导致内存损坏或其他未定义行为的代码。“未定义行为”(UB) 在 C、C++ 和 Rust 等语言中具有特定含义,不同于“未指定”或“实现定义”行为。
Rust 最重要的特性之一是承诺所有安全代码都是可靠的。但是当 unsafe涉及到代码时,这个承诺可能会被打破,而且unsafe代码几乎总是在某个地方涉及到。
数据结构喜欢Vec并且在其实现中HashMap有unsafe代码,就像任何与File::open操作系统对话的函数一样。这就引出了一个常见的问题:“如果 Rust 不能保证所有安全代码都是可靠的,它怎么能成为内存安全的语言呢?”
Rust有一个被认为是未定义的行为列表。声音函数是保持以下不变性的函数:任何只调用声音函数且不包含任何其他unsafe代码的程序都不能提交UB。
不直接或间接使用代码的函数unsafe保证是可靠的,一个不unsafe直接使用任何代码而至调用其他声音函数的函数没根据定义也是声音,但是unsafe直接使用代码的函数和模块可能不健全,不健全函数的调用者也可能是不健全。模块的安全、公共API中的任何不健全都是错误的。
参考来源:https://jacko.io/safety_and_soundness.html
相关文章
- rust-lang.org、crates.io,以及 docs.rs 的管理,已由 Mozilla 转移到 Rust 基金会
- Rust 1.52.1 已正式发布,及其新特性详述—重要,官方建议升级
- 34.Rust-变量绑定
- 初识Rust
- 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST语言,I3C培训教程,80款市场成熟的电感式位置传感器设计
- Rust 欧洲之声|真实世界中的 Rust
- 【Rust日报】2022-11-29 Wirefish:基于 Tauri 的跨平台数据包嗅探器
- 【Rust日报】2022-12-12 Linux 6.1 携带初始Rust代码发布
- 【Rust日报】2022-12-19 Rust中的队列,栈和双端队列
- 如何使用火焰图对 Rust 程序进行性能和内存占用分析
- 【Rust日报】2022-12-21~22 谷歌Android 团队的 Rust 教程
- Rust学习笔记Day15 标记trait有哪些常用trait
- rust 入门笔记:环境安装、hello World、Cargo
- Linux 之父:不出意外,Rust 将出现在 Linux 6.1 版本中
- 通往Rust 1.0之路