现代特性

Rust is built with all the experience gained in the last decades.

语言特性

  • 枚举和模式匹配。
  • 泛型。
  • 无额外开销外部函数接口(FFI)。
  • 零成本抽象。

工具

  • 强大的编译器错误提示。
  • 内置依赖管理器。
  • 对测试的内置支持。
  • 优秀的语言服务协议(Language Server Protocol)支持。

关键点:

  • 与 C++ 类似的零成本抽象,意味着你不需要为高级程序语言的结构“付出”更多的内存和 CPU。例如使用 for 循环与使用 .iter().fold() 结构应该会生成大致相同的底层指令。

  • 值得一提的是,Rust 的枚举是“代数数据类型”(也叫“和类型”)。它使得类型系统可以表示 Option<T>Result<T, E> 等结构。

  • 提醒学生去阅读编译错误 — 许多开发者已经习惯去忽略冗长的编译器输出。Rust 编译器会比其它编译器更健谈。它通常会提供 可操作的 反馈,可以直接复制粘贴到代码中。

  • 相比 Java, Python 和 Go 等语言,Rust 标准库较为精简。Rust 并没有内置一些你可能认为标准和必要的功能:

    • 随机数生成器,可以使用 rand 替代。
    • SSL 和 TLS 支持,可以使用 rusttls 替代。
    • JSON 支持,可以使用 serde_json 替代。 Rust 这么做的原因是标准库中的功能是无法去除的,因此该功能必须非常稳定。对于以上例子,Rust 社区仍在寻找最佳解决方案 — 甚至对一些情况可能没有单一的“最佳解决方案”。 Rust 内置了一个包管理器 Cargo,使得下载和编译第三方 crate 变得简单。这也导致标准库可以更加精简。

    发现高质量的第三方 crate 也许是一个问题。 https://lib.rs/ 等网站对此问题有所帮助。它能帮你比较 crate 的健康指标,以找到一个高质量并受信任的 crate。

  • rust-analyzer 是一个受到广泛支持的 LSP 实现,被主流的 IDE 和文本编辑器所使用。