《Effective Rust》引言

  • King
  • 更新于 2024-04-19 21:48
  • 阅读 1051

引言“代码更像是‘指导原则’,而不是实际规则。”——赫克托·巴博萨ScottMeyers的原版《EffectiveC++》一书取得了巨大的成功,因为它引入了一种新的编程书籍风格,专注于从实际创建C++软件的经验中学习到的指南。值得注意的是,这些指南都是在解释为什么它们是必要的原

引言

“代码更像是‘指导原则’,而不是实际规则。” —— 赫克托·巴博萨

Scott Meyers 的原版《Effective C++》一书取得了巨大的成功,因为它引入了一种新的编程书籍风格,专注于从实际创建 C++ 软件的经验中学习到的指南。值得注意的是,这些指南都是在解释为什么它们是必要的原因背景下进行讲解的 —— 允许读者自行决定他们特定的场景是否需要违反规则。

《Effective C++》的第一版于1992年出版,那时尽管 C++ 还很年轻,但它已经是一个包含了众多隐患的复杂语言;拥有一本指导其不同特性交互的指南是至关重要的。

Rust 也是一种年轻的语言,但与 C++ 相比,它几乎没有隐患。其类型系统的强大和一致性意味着如果一个 Rust 程序能够编译,那么它已经有一个不错的机会可以正常工作 —— 这种现象之前只在更学术、更不易接近的语言如 Haskell 中观察到。

然而,这种安全性 —— 包括类型安全和内存安全 —— 是有代价的。Rust 因为其陡峭的学习曲线而出名,新来者必须经历与借用检查器的斗争、重新设计数据结构以及被生命周期搞得晕头转向的入门仪式。一个能够编译的 Rust 程序可能有很大的机会正常工作,但是为了使其编译而进行的斗争是真实存在的 —— 即使 Rust 编译器的错误诊断非常有助于解决问题。

因此,这本书的目标层次与其他《Effective <语言>》书籍略有不同;有更多的条目涵盖了 Rust 的新概念,尽管官方文档已经包括了这些主题的很好介绍。这些条目的标题类似于“理解…”和“熟悉…”。

Rust 的安全性也导致完全没有标题为“绝不…”的条目。如果你真的不应该做某件事,编译器通常会阻止你这样做。

尽管如此,文本仍然假设读者对语言的基础有所了解。它还假设使用的是2018版的 Rust,使用稳定工具链。

用于代码片段和错误信息的具体 rustc 版本是 1.60。Rust 现在已经足够稳定(并且有足够的向后兼容性保证),代码片段不太可能需要为后续版本进行更改,但错误信息可能会因你使用的编译器版本而有所不同。

文本还多次引用并与 C++ 进行了比较,因为这可能是最接近等价的语言(特别是 C++11 的移动语义),也是 Rust 新手最可能遇到的前一种语言。

组成这本书的条目分为六个部分:

  1. 类型:围绕 Rust 核心类型系统的建议。
  2. 概念:构成 Rust 设计的核心思想。
  3. 依赖项:关于使用 Rust 包生态系统的建议。
  4. 工具:关于如何通过超越 Rust 编译器来改进代码库的建议。
  5. 异步 Rust:关于使用 Rust 异步机制的建议。
  6. 超出标准 Rust:关于在超出 Rust 标准安全环境工作时的建议。

尽管“概念”部分可以说是比“类型”部分更基础,但它故意放在第二位,以便从开始到结束阅读的读者可以先建立一些信心。

致谢

我的感谢送给:

  • Tiziano Santoro,我从他那里最初学到了许多关于 Rust 的知识。
  • Julian Rosse,他在在线文本中发现了数十个拼写错误和其他错误。
  • Martin Disch,他指出了几个条目中的潜在改进和不准确之处。
  • Chris Fleetwood、Sergey Kaunov、Clifford Matthews、Remo Senekowitsch、Kirill Zaborsky 以及一位匿名 ProtonMail 用户,他们指出了文本中的错误。

原文点这里查看

点赞 0
收藏 0
分享

0 条评论

请先 登录 后评论
King
King
0x56af...a0dd
擅长Rust/Solidity/FunC/Move开发