现代化特性
Rust 是基于过去40年中获得的所有经验构建的。
语言特性
- 枚举和模式匹配。
- 泛型。
- 无负担的 FFI。
- 零成本抽象。
工具
- 较好的编译器错误。
- 集成依赖管理。
- 集成测试支持。
- 出色的 Language Server Protocol 支持。
要点:
-
零成本抽象,类似于 C++,意味着你不需要’支付’使用高级语言指令的内存或 CPU 代价。比如,使用
for
编写一个循环应得到与使用.iter().fold()
大致相同的低级指令。 -
值得一提的是,Rust 的枚举是 ‘代数类型’,也被称为 ‘sum types’,它运行类型系统表达类型
Option<T>
和Result<T, E>
这样的内容。 -
提醒人们阅读错误 — 很多开发者习惯于忽视冗长的编译器输出。Rust 的编译器比其它编译器更显著地啰嗦。它经常会给你提供可行的返回,准备好让你复制粘贴到你的代码中。
-
Rust 标准库相比像 Java、Python 和 Go 这样的语言非常小。Rust 没有一些你可能觉得是标准或核心的东西:
- 一个随机数生成器,但是可以看 [rangd]。
- SSL 或 TLS 支持,但是可以看 rusttls。
- JSON 支持,但是可以看 serde_json。 背后的原因是标准库的功能无法消失,因此它必须非常稳定。对于上面的举例,Rust 社区仍然在努力寻找最佳解决方案 — 但是对于这些事情,也许没有一个最佳的解决方案。
Rust 附带了一个 Cargo 形式的内置的包管理器,这使得下载和编译第三方 crate 变得很简单。这样做的结果是标准库可以变得更小。
发现好的第三方 crate 会成为一个难题。网站例如 https://lib.rs/ 通过让你可以对比 crate 的健康指标以找到一个好而可信任的 crate 来帮助你解决这个问题。* rust-analyzer 是一个良好支持 LSP 的实现,用于主流的 IDE 和文本编辑器。