当前位置: 欣欣网 > 码农

Rust内存安全的所有奥秘,都在这本书里了!

2024-05-17码农

--文末赠书--

我对Rust的兴趣始于一个新闻:Linux Torvalds有意向将Rust作为Linux Kernel的开发语言(Linux Kernel 6.1已经正式被纳入Rust)。

开始学习Rust后,我便立刻意识到 它对所有程序员的巨大价值。

Rust是较理想的编程语言,使用它开发的程序 在执行效率上不输于其他任何高级编程语言。

同时,Rust是一门内存安全的语言,具有极高的生产力(掌握它之后),其语法会自然导出良好的程序设计与架构。Rust的缺点也是显而易见的,相比于其他语言,它明显需要程序员花费更多的时间入门,这是因为Rust把程序世界的许多奥秘放在了入门阶段。

如果能有一本书 通过对Rust标准库源代码系统的分析 ,帮助读者理解标准库所定义的类型、函数, 缩短读者在Rust入门阶段所花费的时间 ,那就再好不过了!

熟练掌握一门编程语言的最佳途径就是深入分析、学习、理解优秀的代码。

Rust标准库源代码正是最理想的素材。

Rust标准库具有完善的注释,但这些注释的目的是作为标准库的指南,缺乏系统性及一些语言语法性质的内容,这促使了 【深入Rust标准库:必备的Rust语言高级指南】 书的诞生。

本书疏理了标准库源代码的脉络以便读者学习及研究, 避免读者在学习Rust时陷入一团混乱中。

本书对标准库源代码中与所有权、生命周期、内存安全相关的部分着重进行了注释分析, 以加快读者对这3个概念的理解。

本书还对每一个标准库数据类型背后的需求及解决方案思路进行了探讨,并针对Rust的某些设计理念、设计架构、设计思路进行了重点说明, 以便读者理解Rust程序设计的思维和习惯。

目标读者

本书不适合初学编程的读者。

本书的最佳学习对象 是资深的、掌握了 Rust 初步语法的 C/C++ 程序员。

本书也适合 已经对 Rust 基础语法比较熟悉的,希望对 Rust 有更深了解的,尤其是希望进行操作系统内核编程或通用框架编程的程序员。

对于资深的 Java Python Go 程序员 ,可以将本书作为与其他编程语言相比较的一个参考。

本书不是标准库参考手册,如需要参考手册,请见【Rust标准库参考手册】。

内容脉络

本书按如下脉络对 Rust 标准库进行分析。

Rust标准库的目录结构展示了其精细的模块化设计。CORE库、ALLOC库、STD库的分工明晰且内聚,而Rust标准库的概述包含了这些内容。

Rust具有一些自身的特征,包括泛型、内存安全框架、安全封装类型、解封装等,本书总结了这些特征。

程序员精通C语言的标志是能熟练地使用指针。 Rust的裸指针是学习Rust最基础、最核心的知识点之一。 本书将以裸指针为代表的内存模块作为代码分析的起点, *const T *mut T MaybeUninit<T> ManuallyDrop<T> 有助于读者理解所有权、生命周期、借用等,它们是非常重要的数据类型, 只有理解了这些类型,才能攻克 Rust 的难点。 Rust 提供了开放的接口以便程序员自行设计动态内存的申请与释放机制,并使标准库所有的动态内存都可以基于此机制。

通过对标量类型、切片类型、元组类型等基本类型的分析,就能看到Rust的基本类型可以利用特征语法无限扩展自身的行为,这展现了Rust更有表现力的语法功能。本书对基本类型做了分析。

Option<T>、Result<T,E>等类型完全由标准库定义,而不是由编译器支持的Rust基本类型定义,这一点可以从本书的源代码分析中发现。

Marker Trait通常由编译器实现,也是较难理解的语言特征。 因此,本书对Marker Trait进行了详细的阐述。

标准库除了加、减、乘、除及位运算,还包括下标运算、范围运算、Try运算等,所有运算符都可以重载,且可以跨越类型重载,运算符重载揭示了Rust的很多编码奥秘及技巧。

Iterator闭包是函数式编程的基础构架,Iterator适配器构成了函数式编程的基础设施,标准库完整地实现了这些内容,并且几乎为每个类型都实现了迭代器,尽可能为函数式编程做好准备。本书分析了所有基本类型的Iterator实现。

Cell<T>、RefCell<T>、Pin<T>、Lazy<T>代码阐释了在Rust的基础语法下,如何创造性地解决问题。

Rust标准库其他智能指针类型的堆内存申请及释放基本都由Box<T>、RawVec<T>这两个类型负责。

Rc<T>、Arc<T>是一个杰作,系统级的程序员会仅因为这两个类型而喜欢上Rust。

Vec<T>、VecDeque<T>、LinkList<T>等智能指针类型都可用于实现经典的数据结构示例。

标准库对不同操作系统的适配能让程序员不必像使用C/C++那样重复耗费精力编写代码,节省了编程时间,提高了工作效率。

Future、Poll、Waker与Context揭示了异步编程最基础的思考和实现。

↑限时五折优惠↑

限时五折优惠,快快抢购吧!

↓Rust官方力荐好书↓

专属五折优惠,快快抢购吧!

互动有奖

按以下方式与博文菌互动,即有机会获赠图书!

活动方式:在评论区留言参与「你如何看待Rust的学习」等话题互动,届时会在参与的小伙伴中抽取2名幸运鹅赠送本期图书一本!

说明:留言区收到回复「恭喜中奖」者将免费获赠本图书,中奖者请在收到通知的24小时内将您的「姓名+电话+快递地址」留言至原评论下方处即可,隐私信息不会被放出,未在规定时间内回复视作自动放弃兑奖资格。

活动时间:截至5月20日开奖。

快快拉上你的小伙伴参与进来吧~~

温馨提示可以将「Rust开发笔记」设为星标以免错过赠书活动哦!