Rust程序设计

[美]吉姆•布兰迪(Jim Blandy)

出版时间

2020-09-11

ISBN

9787115546494

评分

★★★★★

标签

编程

书籍介绍
这本书最独特的地方,在于它不满足于把Rust当作一门新语言来教,而是反复追问一个核心命题:如何在释放C/C++级性能的同时,把内存安全牢牢锁在编译期。作者用所有权、引用、生命周期这些机制,解释了Rust为何敢声称「只要编译通过,就不会出现悬垂指针」。书中以曼德布洛特绘图器为线索,把并发、错误处理、迭代器串成一个完整项目,让读者看到「安全」不是口号,而是编译器的硬性担保。多位读者提到,它比官方指南更「全且细」,概念讲解清楚,适合在掌握基础后反复查阅。但翻译生硬、术语不统一也是真实存在的短板,新手慎入。
作者简介
吉姆•布兰迪(Jim Blandy)Mozilla软件工程师,拥有近40年编程经验和30年自由软件开发经验,是Subversion版本控制系统最初的设计者之一。 贾森•奥伦多夫(Jason Orendorff)资深软件工程师,拥有20余年软件开发经验,目前在为Mozilla Firefox Web浏览器开发JavaScript引擎。
AI导读
核心看点
  • 由资深系统程序员撰写,深入解析Rust所有权与并发机制
  • 兼顾C++性能与内存安全,详解泛型、闭包及错误处理
  • 通过曼德布洛特集合等实战案例,展示并发编程实现
读者共识
  • 内容详实且逻辑清晰,比官方指南更具实践指导意义
  • 对核心原理阐述深入,适合反复阅读以深化理解
  • 部分读者认为翻译略显晦涩,但整体评价极高
精彩摘录
  • "You've heard that Rust lets you write safe, fase, concurrent programs. This is the chapter where we show you how it's done. We'll cover three ways to use Rust threads: 1. Fork-join parallelism 2. Channels 3. Shared muatble state"
  • "A panic is not a crash. It’s not undefined behavior. It’s more like a RuntimeException in Java or a std::logic_error in C++. The behavior is well-defined; it just shouldn’t be happening. Panic is safe. It doesn’t violate any of Rust’s safety rules; even if you manage to panic in the middle of a stan"
  • "Stack unwinding is the default panic behavior, but there are two circumstances in which Rust does not try to unwind the stack. If a .drop() method triggers a second panic while Rust is still trying to clean up after the first, this is considered fatal. Rust stops unwinding and aborts the whole proce"
  • "以上情况的共同点是他们都由(不客气地说)程序员的错误所导致。而行之有效的的一条经验法则是:“不要 panic”。"
  • "None of these compromises are acceptable for Rust:the programmer should havecontroovervalueslifetimes,and the language should be safe.But this is a prettywell-explored area of language design.You can't make major improvements withoutsome fundamental changes. Rust breaks the deadlock in a surprising "
  • "另一方面,元组只允许用常量作为索引,比如t.4。不能通过写成t.i或t[i]的形式来获取第1个元素。"
  • "你会看到用来声明固定大小缓冲区的语法:[0u8;1024],它是一个1KB的缓冲区,用0填充。Rust没有任何能定义未初始化数组的写法。(一般来说,Rust会确保代码永远无法访问任何种类的未初始化值。)"
  • "&mut str类型确实存在,但它没什么用,因为对UTF-8的几乎所有操作都会更改其字节总长度,但切片不能重新分配其引用目标的缓冲区。事实上,&mut str上唯一可用的操作是make_ascii_uppercase和make_ascii_lowercase,根据定义,它们会就地修改文本并且只影响单字节字符。"
目录
第 1 章 为什么是Rust 1
第 2 章 Rust初体验 5
2.1 下载和安装Rust 5
2.2 一个简单的函数 7
2.3 编写和运行单元测试 9

显示全部
用户评论
有经验的程序员学一门新语言最痛苦的是什么?入门书籍太简单,读了浪费时间,不读还不踏实。本书恰好不是这种。
全且细,看了一个半月了。(翻译挺迷的
非常精彩,翻译顺畅,内容逻辑清晰
优点:全、精、深,当然这也有相反的面,就是块头太大。。
不止教授 Rust 开发过程,对核心原理也有深入阐述,更进一步的是有与其他语言在设计哲学上的对比,值得反复阅读
神书,起于rust,终于编程思想、操作系统、语法设计,aha time 很频繁。
写得挺详细的,比起the book更具有实践性。写过一些rust后带着问题读会有不少收获,比如这个解决了我trait object怎么加上new方法,mpsc怎么用多消费者之类的细节问题。我觉得以后遇到相关问题我也许会时不时翻一翻相关章节。
下载
收藏