现代化特性

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 和文本编辑器。