The Rust Programming Language

Steve Klabnik Klabnik, Carol Nichols

出版时间

2018-03-20

ISBN

9781593278281

评分

★★★★★
书籍介绍
这不是一本让你快速上手写 Rust 的教程,而是一场关于「为什么 Rust 值得学」的说服。它把所有权、借用、移动这些核心概念当作全书主线,刻意在读者还带着 C++ 经验时展开,逼你重新思考内存管理——从 RAII 到 drop 函数,从空值这个「数十亿美元的错误」到 Rust 如何用编译器保证安全。读者最真实的反馈两极分明:有人四个月啃完、直呼「技术传播的成功样本」,也有人抱怨「特性太多、看完不知如何上手」「概念顺序有问题」。它适合那些愿意为安全与性能付出学习成本、不满足于「能跑就行」的程序员;如果你期待一本速查手册,可能会失望。
AI导读
核心看点
  • 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."
用户评论
特性太多了,看完还是不知道怎么上手
书是好书,但无 GC 导致其语法丑陋。
对pydev来说Rust可太有趣了
比programming rust好读的多
对了解这门语言还是很好的
三天看完了官方读本,消化中
Insanely clear for most of the contents. Highly recommend!
终于完成了一个长久以来的目标,学习rust,现代化的开发工具用起来就是爽。学习rust写更好的cpp!
很好的入门书,容易帮助理清各种under the hood的东西,但深度有限
虽然涵盖面很广而且比较浅,但是不推荐作为rust的一个入门资料。建议看看rust crash course, tourofrust.com 后再来看这本书。这本书看完以后可以开始看 rust in action 或者 zero to production in rust 过度一下,real rust 难得多...
下载
收藏