关键观点
Rust 以编译期约束换取运行期可靠性
Rust 的设计目标是让常见错误尽可能无法通过编译,而不是等到生产环境再暴露。它通过类型系统、显式错误值、初始化检查和穷尽匹配共同实现这一点。“一旦编译就能工作”并非绝对保证,但反映了开发者对…展开观点收起观点
Rust 的设计目标是让常见错误尽可能无法通过编译,而不是等到生产环境再暴露。它通过类型系统、显式错误值、初始化检查和穷尽匹配共同实现这一点。“一旦编译就能工作”并非绝对保证,但反映了开发者对这套反馈机制的真实体验。重构时,编译错误还会成为需要修改位置的清单。
为什么重要: 这能降低遗漏错误分支、无效状态和不完整重构进入生产环境的概率。
支撑证据
I've done this sometimes where I would refactor something. I change the code. change the return type or whatever it is, and then I just fix the compiler errors and until the compiler stops shouting.
对 C++ 而言,内存安全是最强迁移动机
C++ 中的越界访问、释放后使用等小错误,可能直接成为安全漏洞。安全 Rust 保证即使业务逻辑写错,也不会出现其中一整类内存错误。它并不保证程序逻辑正确,却显著缩小了攻击者可以利用的错误空间…展开观点收起观点
C++ 中的越界访问、释放后使用等小错误,可能直接成为安全漏洞。安全 Rust 保证即使业务逻辑写错,也不会出现其中一整类内存错误。它并不保证程序逻辑正确,却显著缩小了攻击者可以利用的错误空间。对于内核和基础设施,这种区别尤其重要。
为什么重要: 内存安全把许多依赖人工审查发现的高危缺陷,转变成语言层面不可表达的问题。
支撑证据
Memory safety is this idea that no matter how stupid the code you write is, it's not going to have a certain class of bugs.