深入RUST标准库内核—序言

本文摘自 inside-rust-std-library

对RUST的兴趣来自于Linus认真考虑将RUST作为Linux内核开发语言的新闻报道。因此开始了对RUST探索,不久后基本上就从心底里认同了这门语言,RUST不仅是高性能及安全的语言,它的语法设计也会带来更合理的代码架构,而后一点实际上是以类为基础的编程语言想解决但效果不彰的。相比于它带来的好处,所有权,借用,生命周期等带来的复杂性仅仅是一个训练和习惯的过程而已。
但这个训练和习惯的过程仅仅靠学习各种书籍,指南,文档显然是无法达成的,代码的训练和研究必不可少。在做了一些表层语法的训练之后,就需要做一些复杂模块的代码研究了。
RUST标准库显然是一个合适的研究对象。(标准库代码就在rust安装目录下),vscode+rust插件是一个合适的阅读代码的IDE。
资深C程序员都理解,编程语言核心的关键就是彻底的了解内存和指针,而RUST各种书籍和学习资料中,对指针的解释基本没有触及根本。标准库代码则揭示了指针的所有秘密:原生指针的结构体类型?内存的申请与释放?不同类型的原生指针如何相互转换?… 。实际上,了解了RUST的内存和原生指针,那就解决了RUST大部分的理解难点,剩下的只是概念理解和工作量。
RUST的运算符重载是RUST的另一个核心点。数学运算/位运算/逻辑运算的重载易于理解。但下标运算符[],范围(Range)运算符../start..end/start..=end/start../..end/..=end,问号运算符?,解引用运算符(*)就没有那么易于理解。
迭代器Iterator可视作语言循环结构的一部分,RUST的基础类型数组,切片,字符串对Iterator的实现是学习RUST的代码技巧不可放过的。
Option/Result是RUST的一大创举,这两个类型使得程序员的疏忽大意和思虑不周再没有用武之地。Option/Result结构体的行为也是RUST的函数式编程的基础设施。
在RUST智能指针系列结构中,Box是内存申请的基础,Box的代码是理解RUST的堆内存操作的关键。
还有Vec,String,Rc,Cell,Cow,RefCell,Arc等等,这里不再一一例举,本书会逐一分析其源码,揭示其秘密。

对RUST标准库的代码进行研究是一件很辛苦,很有乐趣的工作。最有趣和最辛苦的就是碰到一个新的类型,新的Trait的时候。往往在“为什么有这个结构类型和Trait”的思考和探索中,一两个小时就过去了。而后豁然开朗,击节赞叹。RUST也随着这些研究和探索,由仙界堕入凡尘。
本书将把这段研究RUST标准库的过程和结果进行揭示。
RUST现在虽然还泯然众人,但估计不久之后将脱颖而出,而能否熟练的用RUST编写程序很可能成为评判优秀程序员的一个标准。希望这本书能够帮助大家更好的掌握这门语言。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Warren Ren
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!