1.2. 本书编撰原因和主要内容
在当前 Rust 生态中,资料和书籍基本都集中在理论方面,尤其以语法基础为主。而对于实际开发过程中的应用问题,资料较少,也比较碎片化。
当 Rust 程序员遇到实际应用问题,需要找到解决方案时,大多只能首先通过网络查找可用于解决此问题的 crate(类库),然后再去查阅此 crate 的官方文档。在实例参考方面,也仅能查阅官方 API 文档中的简要示例,或者通过搜索引擎查找有无应用实例。对于经验丰富的 Rust 程序员,或许能够通过官方 API 文档,或者搜索引擎获得一些帮助。但我们可以理解,这种做法效率较低。而且,遇到多个同类 crate,还需要自己编码对比,分辨其适用度。最后,即使经过测试后采用,但其成熟度也是未知的。
我们也需要意识到 Rust 语言还处于新兴阶段,相对来说,还是因为感兴趣而自学入门的 Rust 新手程序员居多。若要对目前的 Rust 生态系统做深入了解,体验并不友好。
籍于 Rust 生态现状,笔者认为,籍于实际开发应用问题,对于 Rust 生态系统进行详细实践,对于同类 crate 进行深入应用、比较分析的 Rust 实践指南类书籍,是比较需要甚至迫切需要的。其可以帮助 Rust 程序员系统地了解 Rust 在各个技术方向上的应用,以及技术层面的应用成熟度。对于公司建立 Rust 团队和技术栈选型,也有很大的辅助和参考作用。
笔者编撰此书,既是出于此意。
本书侧重于实践,通过以下实践过程体现目标。
- 聚焦重要的主题,展示可能的解决方案,提供一个跳板引导读者进入一些更高级的内容(这些内容或许可以在网上或者参考手册中找到);
- 以开发中遇到的实际应用问题为导向,以优雅的解决方案为目标,进行完整的实例实践解决方案;
- 在实例实践过程中,引入解决方案所涉及的相关 crate,并进行实例开发展示。同时,若有同类 crate,则通过实践过程和实现效果进行比较;
- 完整实例,可独立运行,也可整合于实际开发环境;
- 对于实例开发中引入的 crate,同步更新于 crate 官方仓库,保持最新版本的深入实践。
本书是受到 rust-lang-nursery 团队的开源书籍项目《Cookin’ with Rust》启发而产生的,并且学习借鉴了它的目录结构。
关于本书中的 crate
本书的 crate 均来自 Rust 语言社区,主要是官方 crate 注册站点、GitHub 开源社区。但本书进行实践和解读的 crate,并非 Rust 社区中存在的全部 crate。
目前,本书的技术方向涵盖方面,大类较广,但小类并不全面。本书作为开源书籍项目,会后续完善,争取全面涵盖技术方向大类及其细分的小类,同时实践和解读更多 Rust 社区中成熟度较高的 crate。本书第一版中,在技术方向小类之下,实践和解读的 crate 来源主要为:其一是已经 Rust Libz Blitz 团队识别的 crate;其二是经笔者实践而推荐的 crate;其三是成熟度较高,社区人气较高的 crate。
关于 crate 的解读分析,则参考了 Rust 语言的官方开源文档站点中各自 crate 的基础文档。除此之外,本书中的解读和分析,均由笔者基于对各个 crate 的实践应用而撰写。
关于本书中的源代码
本书引用了开源书籍项目《Cookin’ with Rust》中的部分示例代码,以及其它开源项目的示例代码,以作为本书的基础实例。
本书中,对于所引用的开源项目的示例代码,部分稍作修改,因此可能和原有示例代码不尽一致。同时,对于引用的示例代码进行了详细实践,包括版本升级、深入解读、比较分析等方面。
除此自外,本书中的实例代码,均有笔者开发,以及跨平台(Linux/WSL、macOS、Windows)调试、测试。