推荐序三

三年前,当我们决定为TiDB开发自有的分布式key-value存储系统TiKV时,我们首先要面对的就是选择什么语言的问题。当时,摆在我们面前的有多个选择:Go、C++、Java和Rust。在仔细评估之后,我们决定使用Rust,虽然那时候Rust并没有太多成功的项目案例。我清晰地记得当时选择一门语言的条件如下。

· 我们需要一门安全的语言,让我们处理内存和多线程的时候更加游刃有余,不用担心类似垂悬指针、数据争用等问题。

· 我们需要一门高性能的静态语言,以便更好地与内存、CPU打交道,不用担心GC引起的延迟突然上升等问题。

· 我们需要一个强大的包管理系统,以避免陷入编译构建工具的细节中,也不用为管理多个版本的库而发愁。

· 我们需要一个友善的社区,在需要时能从这个社区得到帮助,与大家一起成长。

以上这些条件,Rust全部满足。事实也没有让我们失望。我们使用Rust快速地对TiKV进行了迭代。现在,TiKV 不仅大量用在生产环境中,还进入了 CNCF 基金会,成为了一个在Cloud上面构建其他服务的原生基础组件。

但是,我们使用Rust的历程并不是一帆风顺的。在早期,Rust相关的文档非常稀缺,网上也没有很好的参考资料,更别提专业系统的 Rust书籍了。所以,当我拿到汉东同学的《Rust编程之道》时,我是非常兴奋的。本书不仅介绍了 Rust 的基础知识,还详细地解释了 Rust里面非常难以理解的所有权系统、内存模型、并发编程等特性。尤其是所有权这个概念,对很多同学来说,所有权就是从其他语言切换到Rust的第一个拦路虎,而汉东同学在本书中进行了细致清晰的讲解,相信大家会有一种“哦,原来如此”的感慨。更难能可贵的是,本书还从工程角度讲解了如何使用Rust来编写健壮的应用程序,提升产品质量。

Rust是一门相对难学的语言,我个人认为它的学习曲线比C++的学习曲线更陡峭,但我相信,通过《Rust编程之道》,大家能快速掌握Rust,体验使用Rust编程的乐趣,也能更快地在项目中使用Rust来保证程序的健壮性。如果你遇到了困难,不用害怕,你可以很方便地从Rust社区得到帮助。

欢迎来到 Rust的世界!!!

——唐刘,PingCAP首席架构师,TiKV负责人