The Rust Programming Language - Steve Klabnik Klabnik, Carol Nichols

The Rust Programming Language

Steve Klabnik Klabnik, Carol Nichols

出版时间

2018-03-20

ISBN

9781593278281

评分

★★★★★
AI导读
核心看点
  • Rust官方权威指南,系统讲解所有权与借用机制
  • 涵盖模块系统、错误处理及并发编程等核心特性
  • 通过实战项目引导,帮助读者掌握工程化开发流程
适合谁读
  • 具备至少一门编程语言基础,希望转型系统编程的开发者
  • 对内存安全、高性能计算感兴趣的C++或Go语言程序员
  • 想深入理解现代编程语言设计哲学与计算机科学原理者
读前提醒
  • 建议配合在线版文档阅读,利用其交互式特性加深理解
  • 所有权与生命周期概念较难,需耐心结合代码反复调试
  • 部分章节概念密集,建议结合笔记梳理,勿急于求成
读者共识
  • 内容全面权威,是学习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 难得多...
收藏