新書推薦:

《
肌骨复健实践指南:运动损伤与慢性疼痛
》
售價:HK$
294.8

《
数据库原理与应用(MySQL版)
》
售價:HK$
64.9

《
商业数据与分析决策:解锁数据资产,提高商业创新能力
》
售價:HK$
79.2

《
倾盖如故:人物研究视角下的近世东亚海域史
》
售價:HK$
77.0

《
史学视角下的跨文化研究(一): 追踪谱系、轨迹与多样性
》
售價:HK$
104.5

《
历史文本的文化间交织:中国上古历史及其欧洲书写(论衡系列)
》
售價:HK$
118.8

《
1688:第一次现代革命(革命不是新制度推翻旧制度,而是两条现代化道路的殊死斗争!屡获大奖,了解光荣革命可以只看这一本)
》
售價:HK$
217.8

《
东方小熊日本幼儿园思维训练 听力专注力(4册)
》
售價:HK$
88.0
|
編輯推薦: |
计算机语言发展到现在,可以说八仙过海,各有长短:C/C 语言侧重于低级的系统编程(诸如OS,I/O,设备驱动等)和嵌入式编程,优点在于快速高效;Python语言在大数据分析和深度学习方面有独到的优势;Java语言胜在稳定和安全;而Golang则被称为云编程语言。Rust语言则被普遍认为是一种关注内存安全的系统编程语言,同时结合了对性能的低层控制与许多的现代语言特征。谷歌研究认为内存安全漏洞是困扰无数系统的实际威胁。最近一项研究发现,每年通过安全更新解决的漏洞中,约70%属于内存安全问题。
|
內容簡介: |
本书首先介绍了Rust语言的历史、特点、与其他编程语言的优缺点对比,以及可能的应用领域,并详细讲解了Rust安装编译的基本流程、基本命令和各种与Rust编程相关的准备工作。然后,对于想开始学习Rust编程语言的读者,本书继续介绍Rust编程语言的基础知识,诸如关键字、基本类型、基本语句、变量、运算符以及各种错误处理和测试手段。针对每个应用领域,本书用实例演示如何从零开始编写实用例子。
本书的另一个重要原则是边学习、边实践。在每一个学习阶段,除了引入丰富的例子讲解Rust语言的基本要点以外,还编写了专门的章节,说明如何利用已学习的知识来编写简单实用的Rust小程序,综合演示Rust语言的使用方法。
本书配套教学资源包括PPT、样例代码、视频以及外部资源链接,可供读者进一步学习使用。
|
目錄:
|
介绍篇
第1章Rust简介
1.1为什么要学习Rust
1.1.1内存安全
1.1.2效率
1.1.3实用性
1.2Rust语言简介
1.3Rust语言应用展望
1.3.1区块链
1.3.2操作系统
1.3.3嵌入式
1.3.4存储
1.3.5隐私计算/编译器
1.4Rust的缺点
1.5如何快速学习Rust
1.5.1通过关注学习
1.5.2通过动手学习
1.5.3通过阅读学习
1.5.4通过传授学习
第2章Rust编程准备工作
2.1Linux下Rust编程环境
2.1.1Rust编译器的下载安装
2.1.2验证
2.1.3设置代理
2.2Windows下编程环境
2.3在线Rust编译器
2.4Rust编译器分支
2.5Rust编译器版本策略
2.6rustc编译命令
2.7Rust编译器管理工具rustup
2.7.1更新rustup自身
2.7.2工具链相关
2.7.3用rustup安装组件
2.7.4rustup常用命令
2.8Rust调试
2.8.1命令行调试
2.8.2可视化调试
2.9Rust标准库
2.10Rust编程的汉字处理
2.11Rust知识点图谱
第3章Cargo项目管理与编译
3.1项目结构
3.2Cargo的配置文件
3.2.1Cargo.toml
3.2.2Cargo.lock
3.2.3Cargo.lock vs Cargo.toml
3.3依赖包
3.4开发时依赖包
3.5Cargo目标对象
3.5.1库对象
3.5.2二进制对象
3.5.3示例对象
3.5.4测试对象
3.5.5基准性能对象
3.5.6配置一个对象
3.6package表
3.7patch表
3.8常用的cargo的命令
3.9扩展cargo命令
3.10特征
3.11profile
3.11.1默认profile
3.11.2自定义profile
3.11.3重写profile
3.12工作空间
3.13Cargo的使用
3.13.1Cargo系统目录
3.13.2Cargo清除缓存
3.13.3构建时卡住
3.13.4target目录结构
3.14config.toml进行Cargo配置
3.15构建脚本
3.15.1builddependencies
3.15.2build.rs
3.15.3构建脚本的生命周期
3.15.4构建脚本的输出
3.15.5构建脚本的依赖
3.15.6覆盖构建脚本
3.16如何组织Rust项目
3.16.1Rust中项目组织的重要性
3.16.2模块、crate和工作空间
3.16.3模块: 代码组织的逻辑单元
3.16.4crate: 可重用的库或可执行文件
3.16.5创建和管理crate
3.16.6工作空间
3.16.7项目组织工具
3.16.8惯例和最佳实践
3.16.9持续集成
3.16.10试运行
3.16.11覆盖率报告和代码质量指标
3.16.12持续改进的重要性
3.17复杂例子
基础篇
第4章编程基础
4.1堆和栈
4.2基本数据类型
4.2.1整型
4.2.2布尔类型
4.2.3字符类型
4.2.4浮点类型
4.3字面量
4.3.1数字字面量
4.3.2字符串字面量
4.3.3字符字面量
4.4元组
4.4.1元组声明
4.4.2元组解构
4.4.3元组索引
4.4.4元组使用
4.4.5特殊情况
4.5范围类型
4.6结构
4.6.1具名结构体
4.6.2元组类型结构体
4.6.3空结构体
4.6.4结构可见性
4.6.5结构/字段的可变性
4.6.6其他
4.7枚举
4.7.1C风格的枚举类型
4.7.2带数据的枚举类型
4.7.3混合类型的枚举类型
4.7.4枚举的内存布局
4.7.5代数数据类型
4.8数组、切片和向量
4.8.1数组
4.8.2向量
4.8.3切片
4.9字符串
4.9.1字符串切片
4.9.2字符串
4.9.3字节字符串
4.9.4其他字符串类型
4.9.5各种字符串类型之间转换
4.9.6写时复制
4.9.7字符串相关操作
4.10变量和可变性
4.10.1变量绑定
4.10.2变量
4.10.3可变性
4.10.4变量的作用域和遮蔽
4.10.5常量和静态全局变量
4.10.6别名
4.10.7类型转换
4.10.8零长度类型
4.11控制语句
4.11.1分支语句match
4.11.2条件语句if
4.11.3循环语句
4.11.4if/let while
4.12函数
4.12.1提早返回
4.12.2发散函数
4.12.3递归函数
4.12.4函数指针和函数作为参数
4.12.5函数嵌套
4.12.6方法
4.12.7函数作为返回值
4.12.8常量函数
4.12.9函数和闭包参数做模式解构
4.12.10其他
4.13注释
4.14运算符
4.14.1一元操作符
4.14.2二元操作符
4.14.3优先级
4.15impl代码块
4.15.1使用impl给结构定义方法
4.15.2使用impl给枚举定义方法
4.16程序的内存表现
4.17文件操作
4.17.1文本文件
4.17.2二进制文件
4.17.3文件路径
4.17.4搜索指定扩展名的文件
4.17.5压缩文件
4.18Rust标准库
4.18.1Rust标准库的特点
4.18.2Rust标准库模块
4.19其他
4.19.1下画线
4.19.2字符串格式化输出
4.19.3Rust类型清单
4.19.4Rust保留字
4.19.5其他
第5章错误处理
5.1对象解封
5.2Expect()
5.3Option类型
5.4Result类型
5.5访问和变换Option和Result类型
5.5.1用map替换match
5.5.2逻辑组合子
5.5.3在Option和Result类型之间互相转换
5.6try!宏
5.7panic!宏
5.8From trait
5.9问号( )操作符
5.10Carrier Trait
5.11自定义错误类型
5.12Error Crates
5.12.1failure crate
5.12.2snafu crate
5.12.3anyhow crate
5.12.4thiserror crate
5.13Main函数中的错误返回
5.14错误传递
5.15函数中处理多种错误类型
5.16处理特定的错误类型
5.17总结
第6章日志和测试
6.1单元测试
6.1.1单元测试
6.1.2断言宏
6.1.3#[should_panic]属性
6.2集成测试
6.2.1Library crate的集成测试
6.2.2二进制crate的集成测试
6.2.3定义集成入口
6.2.4有选择地执行集成测试案例
6.3文档测试
6.3.1自动生成程序文档
6.3.2编写程序文档
6.3.3运行文档中的测试代码
6.4性能测试
6.4.1nightly分支下的性能测试
6.4.2stable分支下的性能测试
6.4.3其他
6.5日志
6.5.1日志宏
6.5.2日志记录器
6.5.3非结构化/结构化日志
6.5.4常用用法
6.5.5日志相关的环境变量
6.6日志监控
6.7复杂样例
第7章基础篇总结
7.1命令行程序
7.1.1命令行参数解析
7.1.2命令行程序的输入/输出
7.2环境变量读写
7.2.1读取操作系统环境变量
7.2.2读取环境配置文件
7.3文件读写
7.3.1Json文件读写
7.3.2Yaml文件读写
7.3.3Toml文件读写
7.4进程
7.4.1生成子进程
7.4.2终止进程
7.4.3进程信号处理
7.5正则表达式
7.6时间相关
7.6.1标准库的Time crate
7.6.2chrono crate
7.6.3自定义性能测试
7.7区块链相关
7.7.1比特币公私钥生成
7.7.2比特币地址生成
7.7.3keystore文件
7.7.4密码学应用
7.8错误处理
7.8.1版本1
7.8.2版本2
附录词汇表
|
內容試閱:
|
计算机语言发展至今,呈现出“百花齐放,各有所长”的局面: C/C 以快速高效著称,适合系统编程; Python在数据分析和人工智能领域独占鳌头; Java以稳定性见长; Go被誉为“云计算时代的编程语言”。Rust作为一门新兴的系统编程语言,不仅继承了C/C 的性能优势,更凭借其独特的内存管理机制(如生命周期、所有权、借用等)解决了长期困扰开发者的内存安全问题。据统计,70%的系统漏洞源于内存安全问题,而Rust正是为此而生的。
然而,Rust 的学习曲线如同一座陡峭的山峰,尤其是对习惯了传统编程语言(如 C/C 、Java、Python 等)的开发者而言,其函数式编程特性和创新的内存管理机制让许多初学者望而却步。但这座山峰并非不可征服——只要找到正确的路径,读者经过训练也能轻松登顶。本书基于作者20多年的实战经验,采用独特的“自底向上”教学法,将复杂的概念转化为直观的架构图、流程图和代码示例,帮助读者快速理解并掌握核心知识点。通过丰富的实战案例,我们将 Rust 的核心特性(如内存管理、并发/异步编程等)以工程师熟悉的视角逐一拆解,科学地降低学习难度。本书适合具有一定经验的软件工程师自学,也适合高等院校的计算机专业相关学生在教师的指导下学习。读者最好已经学习并掌握了一门编程语言(函数式编程语言 Haskell,或者过程式编程语言Java、C/C 、Python 等面向对象编程语言均可)。我们希望通过这种循序渐进、贴近实战的教学方式帮助读者快速掌握 Rust,并将其应用于实际项目,为未来的技术挑战做好准备。
本书的核心目标是让读者学完即用,快速上手 Rust 的实际开发。 我们不仅通过大量实例深入浅出地讲解编程的概念和技巧,更在每篇末尾精心设计了实战项目,完整呈现从需求分析、任务拆解、架构设计到代码实现的全流程。这种“即学即用、接近实战”的方式可以确保读者不仅能理解Rust的核心知识点,还能立即将其运用到实际项目,掌握独立开发应用程序的能力。
为提高阅读效率,代码讲解多采用注释形式(以“//”或“#”标记),仅对关键知识点进行正文解析。此外,为避免术语混淆,本书直接采用业界通用的英文术语(如 crate、trait 等),并在附录中提供中英文词汇对照表(Glossary)。本书所有示例均基于 Rust 2018 版(部分支持 Rust 2021 版),全部包含在随书附赠的教学资源包中,并已上传至GitHub和码云。示例涵盖区块链、Substrate、Solana、IPFS/Filecoin、同态加密(HE)、多方计算(MPC)、零知识证明(ZKP)等热门领域; 同时,代码实现均选择使用Tokio、Warp等流行框架。本书旨在帮助读者快速掌握Rust,“在战争中学会战争,在游泳中学会游泳”。如果读者希望深入某个领域,本书以及教学资源包还提供了丰富的资源链接,作为进一步学习的起点。
年轻的Rust潜力无限,它正在定义编程的未来。鉴于目前中文版Rust相关书籍稀缺,本书希望能填补这一空白,并推动Rust编程语言进入高校计算机教育课程体系,为即将到来的Rust编程语言大规模应用培养更多的人才。Trust Rust,trust yourself,让我们一起拥抱这场技术变革,用Rust开启编程的新篇章!
资料获取
可以在https://gitee.com/gavinzheng731/rustprogrammingbook获得本书的示例程序、相关文件、论文、PPT课件等配套资源; 镜像站为https://github.com/gavinzheng/RustProgramBook。这些资料也可以在本书的教学资源包中找到。
致谢
感谢催生本书的出版界的朋友: 清华大学出版社郭赛编辑,Springer朱伟博士,AM文化合伙人周瑾瑜女士。感谢武汉北大高科软件股份有限公司罗铮先生、王涛先生、邓昕先生; 北科信链数字有限公司戴天年先生、成璋先生; 深圳技术大学城市交通与物流学院罗钦先生; 武汉城市职业学院教务处处长肖静教授,校工会常务副主席程华平老师,计算机与电子信息工程学院院长向健极教授,党总支书记黄毅老师,副院长王世刚副教授、王社副教授,软件教研室黄涛老师,教学办公室主任叶飞老师、钟雯老师; 中通服湖北公司区块链研究院卢赓先生; 深圳安复每天王振宇先生、曹彦能女士对本书编写工作的支持。
作者
2025年3月
|
|