(特价书)Rust编程:入门、实战与进阶
基本信息

编辑推荐
Web3meta Labs创始人兼CTO、Polkadot(波卡)技术大使撰写
详细讲解Rust核心语法,注重编码能力训练,将数据结构、算法与Rust编程结合,
精选39道LeetCode高频算法面试真题
内容简介
计算机书籍
这是一部注重编码能力训练的实战性著作,既能帮助读者扎实掌握Rust的主要语法知识并具备实战能力,又能指导读者快速从初学者晋级为高手。
全书秉持学以致用的原则:一方面,没有事无巨细地罗列Rust的每一个语法知识点,但是常用知识点和重要知识点悉数囊括;一方面,将各种常见数据结构和算法与Rust编程实战相结合,同时精选39道LeetCode高频算法面试题,帮助读者快速语法知识固化为实战能力。
全书一共15章,分为3个部分:
第1部分(第1~11章) Rust编程必备语法
非常有针对性地讲解了Rust的常用语法,由浅入深,循序渐进,能帮助读者快速掌握Rust的必备语法知识并具备基本的编程能力
第二部分(第12~13章) Rust编码能力训练
将数组、栈、队列、哈希表、链表、树等实用的数据结构和递归、分治、回溯、二分查找、深度优先搜索、广度优先搜索、排序、动态规划等常用算法与Rust编程实战结合,并精选39道LeetCode高频算法面试真题,帮助读者将语法知识转化为编程实战能力。
第三部分(第14~15章) Rust综合进阶实战
以排序算法为主题,围绕功能拓展和性能拓展两条主线,结合工程管理、泛型、trait系统、高阶函数、闭包、迭代器、单元测试、多线程并发和异步并发等重要的语法知识点进行综合实战训练,进一步在实战中提升编程水平。
作译者
北京大学软件工程硕士,资深Rust技术专家和区块链技术专家,有10年以上软件开发经验。
Web3meta Labs创始人兼首席技术官,Polkadot(波卡)技术大使,熟悉区块链技术框架Substrate开发。Web3meta Labs致力于为Ethereum、Polkadot等领先的区块链项目打造基础设施。
目录
语言基础篇
第1章 初识Rust2
1.1 Rust语言简介2
1.2 搭建编程环境3
1.3 Hello Rust4
1.4 Hello Cargo5
1.5 本章小结7
第2章 变量与数据类型8
2.1 变量和可变性8
2.1.1 变量声明8
2.1.2 变量的可变性9
2.1.3 变量遮蔽9
2.1.4 常量10
2.2 基本数据类型11
2.2.1 整数类型11
2.2.2 浮点数类型12
2.2.3 布尔类型12
2.2.4 字符类型12
2.2.5 范围类型12
前言
虽然对Rust语言早有耳闻,但真正接触Rust还缘于笔者在“一块+”区块链技术社区参加的陈锡亮老师主讲的“Substrate快速入门与开发实战”课程。Substrate是一个开源的区块链开发框架,由Parity团队使用Rust语言编写。想学好Substrate,毋庸置疑得先学好Rust。因此笔者深入研读了最权威的官方教程The Rust Programming Language、以代码展示方式讲解语法的Rust by Example以及深入底层系统介绍Rust设计哲学的《Rust编程之道》等著作。虽有10年以上编程经验,熟悉Java、Python、Go等语言,但在学习Rust编程的过程中,笔者依然有严重的挫折感。挫折感的来源有以下三点。
一是初学者对Rust语言中一些特有的语法和符号需要一个适应过程。
二是Rust编译器内建各种安全检查规则,加上独有的所有权系统,在编写稍微复杂的程序时,几乎难以做到一次编译就成功通过,需要经历反复的修改与编译调试。
三是Rust编程中关于引用、智能指针的使用,以及在编写Unsafe Rust过程中如何保证内存安全很复杂,对Java、Python、Go等语言的开发者也是较大的挑战。
另外,纵观市面上Rust图书的共同点,大多侧重于对Rust设计思想的介绍、对语法使用以及实现原理的详细讲解,缺乏有效的编程实战教程。
因此,经过一段时间的深入思考,笔者决定撰写本书,并尝试将不限语言的数据结构和算法与Rust编程实战进行结合,让读者可以凭借以往的编程基础使用Rust语言进行实战,在实战中巩固各知识点,提升Rust编程能力。学以致用是贯穿本书的理念。
读者对象
本书内容由浅入深,即使没有任何Rust编程经验的开发者也可以学习参考。本书适用于以下几类读者。
有高级语言(如Java、Python、Go、C++等)编程经验的开发者;
正在从事软件开发工作的开发者;
计算机软件及相关专业的学生;
其他有一定数据结构和算法经验且对Rust感兴趣的读者。
本书特色
以往常听一些朋友抱怨,且笔者在学习过程中也有类似感受:“学习一门新的语言,对入门书籍阅读过半,还只会写Hello World程序,继续学习后面的章节却已忘记了前面的内容。”之所以出现这种情况,主要是因为初学者很容易纠缠于语法细节的学习,钻一些深奥复杂却不常用的语法的“牛角尖”,导致“从入门到放弃”的情况时有发生。特别是Rust编程的初学者,如果一开始就囿于Rust语法细节,很容易因受挫而放弃。
笔者较为推崇的学习方式是,掌握一门语言最基础的语法知识后就进行编程实战训练,实践中遇到了问题再去探究深层原理和细节。这样比一开始就进行“面面俱到、点点探究”的学习会更有收获,理解也更为透彻。因此,本书将秉持学以致用的原则进行讲解,不事无巨细地罗列一个个知识点,也不立刻探究背后的原理和细节,而是帮助读者以最快的速度掌握Rust编程所需的基本概念和基础语法,快速进入编程实战训练,以刻意练习的方式让读者掌握每个知识点。这里的刻意练习包含以下三个方面的要求。
一是在“学习区”学习。跳出学习的“舒适区”,选择有难度、有挑战的知识学习。数据结构和算法的优劣取决于开发者的技术功底,而开发者对数据结构和算法知识的掌握程序决定了他们在面对新问题时分析问题和解决问题的能力。因此,结合数据结构与算法的知识点进行编程训练,能使读者快速建立对Rust编程的认知,是挖掘自身成长潜能的重要手段和开发高性能程序的必备基础。
二是大量重复练习。只有不断地重复练习,才能真正掌握知识点。本书精选LeetCode平台上与Rust语法知识点相关的一些高频算法面试真题,在细致讲解与代码实现中,把重要的语法知识点通过题目复现,帮助读者在重复练习中真正做到各个知识点的熟练掌握与融会贯通;同时,还会把初学者在练习中遇到的常见问题以及解决问题的过程展现出来,使读者在逐步解决问题中巩固知识点。
三是及时测评反馈。没有及时反馈的练习往往是无效的。本书将协助读者在LeetCode平台上进行练习并及时获得测评反馈,增加读者的学习兴趣。
如何阅读本书
媒体评论
——张汉东《Rust 编程之道》作者
本书在介绍Rust语法的基础之上,提供了很多有助于提高Rust开发技能的实例,对增强读者的动手能力大有裨益,是开发者学习Rust难得的参考资料。
——杨镇《深入以太坊智能合约开发》作者
很高兴看到我的同学春雷愿意将自己的实战经验分享给大家,也很荣幸有机缘把他推荐给华章。这本书的内容循序渐进,方便读者快速上手,让读者在实践中理解原理。
——叶毓睿《软件定义存储》作者
本书从Rust语言基础和编程能力训练两方面入手,前者能快速为读者打下基础,后者能让读者快速具备实战能力。除了Rust的基础知识和实战练习外,本书还讲解了Rust的异步并发系统,能让初学者更全面地领略Rust的优异之处。
——岳利鹏Patract Labs创始人
通过这本书,初学者们不仅可掌握Rust编程必备的语法知识,还能够通过实战快速提升编码能力。希望有更多的开发者进入Rust的世界。
——雅珣“一块+”区块链开发者社区创始人
Rust和Emacs的学习曲线类似,入门门槛比较高,让初级的区块链开发者望而却步。但Rust又特别适合区块链开发,春雷这本书详略得当、重点突出、浅显易懂,能大幅提升读者的学习效率。
——郭光华链网科技CEO
目前,PPIO正尝试在P2P内容分发、分布式存储系统中使用Rust开发底层组件。春雷的书从基础语法到编码训练,再到综合实战,结构清晰,层层深入,能帮我们节省许多时间。
——谢晋PPIO高级项目经理