Rust权威指南

Steve Klabnik

出版时间

2020-05-31

ISBN

9787121387067

评分

★★★★★

标签

编程

书籍介绍

本书由 Rust 核心开发团队编写而成,由浅入深地探讨了 Rust 语言的方方面面。从学习函数、选择数据结构及绑定变量入手,逐步介绍所有权、trait、生命周期、安全保证等高级概念,模式匹配、错误处理、包管理、函数式特性、并发机制等实用工具,以及两个完整的项目开发实战案例。 作为开源的系统级编程语言,Rust 可以帮助你编写出更为快速且更为可靠的软件,在给予开发者底层控制能力的同时,通过深思熟虑的工程设计避免了传统语言带来的诸多麻烦。 本书被视为 Rust 开发工作的必读书目,适合所有希望评估、入门、提高和研究Rust语言的软件开发人员阅读。

AI导读
核心看点
  • 由Rust核心团队编写,系统讲解所有权与生命周期
  • 通过猜数游戏等实战案例,循序渐进引导入门
  • 深入解析Trait、并发机制及错误处理等高级特性
适合谁读
  • 希望系统学习Rust语言的软件开发人员
  • 有C++或Java背景,关注内存安全的工程师
  • 需要评估或深入研究Rust生态的技术人员
读前提醒
  • 建议配合在线文档阅读,纸质书可作为回顾工具
  • 第四章所有权概念较难,切勿贪快,需仔细研读
  • 后半部分难度陡增,需结合实践消化抽象概念
读者共识
  • 内容权威且编排合理,是公认的Rust入门首选
  • 学习曲线较陡,概念新颖,短期上手有一定难度
  • 翻译质量整体在线,但部分读者认为篇幅过长

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "定义元组结构体时依然使用struct:关键字开头,并由结构体名称及元组中的类型定义组成。下面的代码中展示了两个分别叫作Color和Point的元组结构体定义:struct Color(i32,i32,i32); struct Point(i32,i32,i32); let black Color(0,0,0); let origin Point(0,0,0);"
  • "隐藏 在第2章的“比较猜测数字与保密数字”一节中,我们曾经看到一个新声明的变量可以覆盖掉旧的同名变量。在Rust世界中,我们把这一现象描述为:第一个变量被等二个变量隐藏(shadow)了。"
  • "在C++中,这种在对象生命周期结束时释放资源的模式有时也被称作资源获取即初始化(Resource Acquisition Is Initialization, RAⅡ)。假如你使用过类似的模式,那么你应该对Rust中的特殊函数drop并不陌生。 这种模式极大地影响了Rust中的许多设计块择,并最终决定了我们现在编写Rust代码的方式。在上面的例子中,这套释放机制看起来也许还算简单,然而一旦把它放置在某些更加复杂的环境中,代码呈现出来的行为往往会出乎你的意料,特别是当我们拥有多个指向同一处堆内存的变量时。让我们接着来看一看其中一些可能的使用场景。"
  • "Rust提供了一系列的功能来帮助我们管理代码,包括决定哪些细节是暴露的、哪些细节是私有的,以及不同的作用域内存在哪些名称。这些功能有时被统称为模块系统(module system),它们包括: 包(package):一个用于构建、测试并分享单元包的Cargol功能。 单元包(crate):一个用于生成库或可执行文件的树形模块结构。 模块(module)及use关键字:它们被用于控制文件结构、作用域及路径的私有性。 路径(pth):一种用于命名条目的方法,这些条目包括结构体、函数和模块等。"
  • "观察Cargo。toml中的内容,你也许会奇怪它居然没有提到src/main.rs,这是因为Cargo会默认将src/mai.rs视作一个二进制单元包的根节点而无须指定,这个二进制单元包与包拥有相同的名称。同样地,假设包的目录中包含文件src/lib.rs,Cargo也会自动将其视作与包同名的库单元包的根节点。Cargo会在构建库和二进制程序时将这些单元包的根节点文件作为参数传递给rustc。"
  • "Tony Hoare,空值的发明者,曾经在2OO9年的一次演讲Null References:TheBillion Dollar Mistake中提到: 这是一个价值数十亿美金的错误设计。当时,我正在为一门面向对象语言中的引用设计一套全面的类型系统。我的目标是,通过编译器自动检查来确保所有关于引用的操作都是百分之百安全的。但是我却没有抵挡住引入一个空引用概念的诱惑,仅仅是因为这样会比较容易去实现这套系统。这导致了无数的错误、漏洞和系统崩溃,并在之后的40多年中造成了价值数10亿美金的损失。 空值的问题在于,当你尝试像使用非空值那样使用空值时,就会触发某种程度上的错误。因为空或非空的属性被广泛散"
  • "Expressions do not include ending semicolons. If you add a semicolon to the end of an expression, you turn it into a statement, and it will then not return a value."
  • "Function bodies are made up of a series of statements optionally ending in an expression."
作者简介
Steve Klabnik,Rust文档团队负责人,Rust核心开发者之一,Rust布道者及高产的开源贡献者,此前致力于Ruby等项目的开发。 Carol Nichols,Rust核心团队成员,i32、LLC联合构建者,Rust Belt Rust会议组织者。 毛靖凯,游戏设计师,一直专注于游戏领域研发,曾负责设计和维护了多个商业游戏的基础框架。业余时间活跃于Rust开源社区,并尝试使用Rust来解决游戏领域中的诸多问题。 唐刚,资深开发者,Rustcc社区创始人和维护者之一。目前就职于Cdot Network。使用Rust从事区块链共识协议的开发工作。 沙渺,嵌入式开发者,国内Rust语言社区和Raspberry Pi(树莓派)开发社区早期参与者。负责维护多个RISC-V架构硬件平台的基础函数库。
目录
目 录
第1章 入门指南 1
安装 1
在Linux或macOS环境中安装Rust 2
在Windows环境中安装Rust 3

显示全部
用户评论
读了电子版,学习 rust 的话建议看一下,不过有点太多了
这才是正确的入门Rust的方式,前半本很愉快的翻,解决了模块化,match上的疑惑,很棒;后半本就感觉比较零散,感觉东拉西扯的.显然这书作者是懂Go的,很多地方用了go做类比.
比深入浅出那本更适合入门
目前唯一系统入门书,方方面面都讲到了,就是有点太啰嗦了
读的第一本rust的书,对rust有了基本的了解。内存管理还需要进一步学习。
rust 官方文档, 部分章节必读. 后面部分, 写的不太好. 不需要完整读完.
这个翻译我真的看吐了,雄蝶们,你们是怎么看下去的啊!
官方教程纸质版
勉强算是看完了吧
下载
收藏