Rust编程之道
  • 推荐0
  • 收藏4
  • 浏览3.1K

Rust编程之道

张汉东 (作者) 

  • 书  号:978-7-121-35485-4
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:刘恩惠
电子书 ¥88.00
购买电子书
纸质版 ¥128.00
Rust 是一门利用现代化的类型系统,有机地融合了内存管理、所有权语义和混合编程范式的编程语言。它不仅能科学地保证程序的正确性,还能保证内存安全和线程安全。同时,还有能与C/C++语言媲美的性能,以及能和动态语言媲美的开发效率。 本书并非对语法内容进行简单罗列讲解,而是从四个维度深入全面且通透地介绍了Rust 语言。从设计哲学出发,探索Rust 语言的内在一致性;从源码分析入手,探索Rust 地道的编程风格;从工程角度着手,探索Rust 对健壮性的支持;从底层原理开始,探索Rust 内存安全的本质。 本书涵盖了Rust 2018 的特性,适合有一定编程经验且想要学习Rust 的初学者,以及对Rust 有一定的了解,想要继续深入学习的进阶者。
Rust官方作序力荐 | 基于Rust 2018大版本 | 从设计理念出发讲解,降低Rust学习曲线!
张汉东,80后,资深软件工程师、企业独立咨询师、技术作者译者。爱好读书、写作,喜欢研究技术、学习之道,以及心智和认知开发模式。曾在互联网行业沉浮十余载,先后效力于电商、社交游戏、广告和众筹领域。作为企业独立咨询师,先后为思科、平安科技和闪迪等公司提供咨询服务。目前在心智教育及创客领域开疆拓土。是《Ruby原理剖析》一书的译者。 喜欢Rust语言,为Rust语言提交了三次编译器Bug,并协助修复其中之一。为官方Rust 2018 Guide做过贡献,并数次提出改进意见。参与了国内Rust社区的管理和运营,在2018年打造了《Rust每日新闻》频道,深受Rustacean们的喜爱。为初学者精心打造了Rust必学第一课:知乎Live《如何系统地学习Rust语言》,获得五星好评。
前言 在我刚开始学习Rust 的时候,在社区里听到最多的声音就是“Rust 学习曲线陡”。已经有一定编程经验的人在学习一门新语言时,都喜欢直接上手写代码,因为这样可以快速体验这门语言的特色。对于大多数语言来说,这样确实可以达到一定的学习目的。但是当他们在初次学习Rust 的时候,就很难通过直接上手来体验这种快感。 我第一次学习Rust 时就遇到了这样的情况。我按以往的编程经验直接写下了代码,但是编译无法通过;可是有时候简单调换两行代码的顺序,程序就能顺利编译成功了,这让我非常困惑。我想这也是大多数人感觉“Rust 学习曲线陡”的原因吧。经过和Rust 编译器的多次“斗争”之后,我不得不重新反思自己的学习方法。看样子,Rust 编译器暗含了某种规则,只要程序员违反了这些规则,它就会检查出来并阻止你。这就意味着,作为程序员,你必须主动理解并遵守这些规则,编译器才能和你“化敌为友”。 所以,我就开始了对Rust 的第二轮学习,忘掉自己以往的所学,抱着初学者的心态,从零开始系统地学习Rust。然而,事情并没有这么简单。 Rust 官方虽然提供了Rust Book,但是内容的组织非常不友好,基本就是对知识点的罗列,系统性比较差。后来官方也意识到了这个问题,推出了第2 版的Rust Book,内容组织方面改善了很多,对学习者也非常友好,但系统性还是差了点。后来又看了国内Rust 社区组织群友们合著的Rust Primer,以及国外的Programming Rust,我才对Rust 建立了基本的认知体系。 直到此时,我才意识到一个重要的问题:Rust 学习曲线陡的根本原因在于Rust 语言融合了多种语言特性和多种编程范式。这就意味着,Rust 涉及的知识范围非常广泛,涵盖了面向对象、函数式、泛型、底层内存管理、类型系统、设计模式等知识。从底层到上层抽象,从模式到工程化健壮性,无所不包。可以说,Rust 是编程语言发展至今的集大成者。对于大多数Rust 语言的初学者来说,他掌握的知识体系范围是小于Rust 所包含的知识量的,所以在学习Rust 的过程中会遇到无法理解的内容。 我在学习Rust 之前,所掌握的编程语言知识体系大多是和拥有GC 的动态语言相关的,对于底层内存管理知之甚少。所以在我学习Rust 所有权的时候,就很难理解这种机制对于内存安全的意义所在;而我所认识的一些拥有C 语言编程经验的朋友,在学习Rust 时面临的问题是,难以理解Rust 支持的上层抽象,对他们来说,Rust 中融合的类型系统和编程范式就是他们学习道路上的“拦路虎”;对于拥有Haskell 等函数式编程经验的朋友,会感觉Rust的类型系统很容易理解,但是底层的内存管理和所有权机制又成了需要克服的学习障碍;来自C++编程圈的朋友,尤其是懂现代C++的朋友,对Rust 所有权机制理解起来几乎没有困难,但是类型系统和函数式编程范式可能会阻碍他们的学习。当然,如果正好你没有上述情况,那说明你的相关知识体系已经很全面了,你在Rust 的学习之路上将会非常顺利。 这是不是意味着,在学习Rust 之前需要把其他语言都学一遍呢?答案是否定的。 Rust 编程语言虽然融合了很多其他语言的特性和范式,但它不是进行简单的内容堆叠,而是有机地融合了它们。也就是说,Rust 遵循着高度的一致性内核来融合这些特性。我们只需要从Rust 的设计哲学出发,牢牢地把握它的设计一致性,就可以把它的所有特性都串起来,从而达到掌握它的目的。这正是本书遵循的写作逻辑。 本书特点 从设计哲学出发,探索Rust 语言的内在一致性。设计哲学是一门优秀编程语言保持语言一致性的关键所在。设计哲学是语言特性和语法要素设计的诱因和准则。理解Rust 语言的设计哲学,有助于把握Rust 语言的内核与一致性,把Rust 看似纷繁复杂的特性都系统地串起来。 从源码分析入手,探索Rust 地道的编程风格。Rust 是一门自举的语言,也就是说,Rust语言由Rust 自身实现。通过阅读Rust 标准库和一些第三方库的源码,不仅可以深入理解Rust提供的数据类型和数据结构,更能体验和学习地道的Rust 编程风格。 从工程角度着手,探索Rust 对健壮性的支持。Rust 通过类型系统、断言、错误处理等机制保证内存安全的同时,还保证了系统的健壮性。从工程角度去看 Rust,才能看到 Rust对系统健壮性的支持是多么优雅。 从底层原理开始,探索Rust 内存安全的本质。只有深入底层,才能理解Rust 所有权机制对于内存安全的意义。而且可以进一步理解Rust 的类型系统,以及Unsafe Rust 存在的必要性。 读者群体 适合本书的读者群体包括:  有一定编程经验,想要学习Rust 的初学者。  对Rust 有一定了解,还想对Rust 深入学习的进阶者。 本书不适合完全没有编程基础的人学习。 如何阅读本书 对于Rust 初学者,建议按照章节顺序去阅读。因为本书每一章内容基本都依赖于前一章内容的前置知识。 对于Rust 有一定了解的朋友,可以选择你感兴趣的章节去阅读。因为本书的每一章也是对一个垂直主题的深入探讨。 一些章节的开头罗列出了通用概念,这是为了更通透地讲解相关知识的来龙去脉。如果你对这部分内容不了解,那么建议你把这部分内容(属于前置知识)认真看完再去看后面的内容。如果你对这部分内容已经有了充分的了解,那么完全可以跳过,直接选择你最关心的内容去阅读。 章节概述 第1 章 新时代的语言。这一章将从Rust 语言的发展历史概述开始,引出Rust 的设计哲学,通过设计哲学进一步阐述Rust 的语言架构。该语言架构也是本书组织内容时遵循的准则之一。这一章还将介绍Rust 语言社区的现状和未来展望。最重要的是,这一章将介绍Rust代码的执行流程,这对于理解本书后面的章节会有所帮助。 第2 章 语言精要。学习任何一门语言时,首先要做的就是了解其语法。这一章将罗列Rust 语言中的常用语法,但不是简单罗列,而是遵循一定的逻辑进行罗列。在介绍语法之前,这一章会先对Rust 语言的基本构成做整体概述。然后将介绍一个非常重要的概念:表达式。它是Rust 语法遵循的最简单的准则之一。接下来才会依次介绍Rust 中最常用的语法,让读者对Rust 语言有一个初步的了解。 第3 章 类型系统。类型系统是现代编程语言的重要支柱。这一章首先将以通用概念的形式介绍类型系统相关的概念,目的是帮助不了解类型系统的读者建立初步认知。接下来将从三方面阐述Rust 的类型系统。为了理解Rust 基于栈来管理资源的思想,有必要先了解Rust中对类型的分类,比如可确定大小类型、动态大小类型和零大小类型等。这一章还将介绍Rust类型推导功能及其不足。接下来将介绍Rust 中的泛型编程。泛型是Rust 类型系统中最重要 的一个概念。最后会介绍Rust 的“灵魂”,trait 系统。对类型系统建立一定的认知,有利于学习后面的内容。 第4 章 内存管理。这一章首先将介绍底层内存管理的通用概念。在此基础上,围绕内存安全这个核心,从变量定义到智能指针,逐渐阐述Rust 中资源管理的哲学。这部分内容是真正理解Rust 所有权机制的基础。 第5 章 所有权系统。这一章首先会介绍关于值和引用语义的通用概念,然后在此基础上探讨Rust 的所有权机制。读者将看到,Rust 如何结合类型系统和底层内存管理机制,以及上层值和引用的语义形成现在的Rust 所有权系统。然后,进一步围绕内存安全的核心,阐述借用检查和生命周期参数的意义。通过这一章的学习,读者将会对Rust 的所有权系统有全面深入的了解。 第6 章 函数、闭包和迭代器。在对Rust 的类型系统和内存安全机制有了一定了解之后,我们将开始深入学习Rust 编程最常用的语法结构。函数是Rust 中最常用的语法单元。Rust的函数承载了诸多函数式编程范式的特性,比如高阶函数、参数模式匹配等,同时也承载了面向对象范式的特性,比如为结构体及其实例实现方法,实际上就是一个函数调用的语法糖。 然后将介绍闭包的用法和特性,帮助读者对闭包建立全面深入的认知,更重要的是,通过学习闭包的实现原理,进一步了解Rust 中零成本抽象的哲学思想。最后介绍迭代器模式,以及Rust 中的迭代器实现机制。迭代器也是Rust 最常用的特性,通过这一章的学习,你将彻底了解迭代器。 第7 章 结构化编程。这一章将对Rust 混合范式编程进行探讨,会重点介绍Rust 中的结构体和枚举体,以及它们如何在日常编程中以面向对象风格编程。同时,还将介绍三种设计模式,前两种是Rust 标准库以及第三方库常用的设计模式,最后是一种合理利用Rust 资源管理哲学的设计模式。通过学习这一章的内容,有利于掌握地道的Rust 编程风格。 第8 章 字符串与集合类型。字符串是每门编程语言最基本的数据类型,Rust 自然也不例外。出于内存安全的考虑,Rust 中的字符串被分为了多种,并且语言自身没有自带正则表达式引擎。这一章将从字符编码开始,围绕内存安全,对Rust 中的字符和字符串做彻底梳理,并且阐述如何在没有正则表达式引擎的情况下,满足字符串进行匹配搜索等的需求。集合类型也是编程中必不可少的数据结构。这一章将着重介绍动态数组Vector 和Key-Value 映射集HashMap 的使用,而且还会深入挖掘HashMap 底层的实现原理,介绍Rust 标准库提供的HashMap 安全性,进一步探讨如何用Rust 实现一个生产级的数据结构。最后将通过探讨一个Rust 安全漏洞的成因,来帮助读者正确理解容量的概念,从而写出更安全的代码。 第9 章 构建健壮的程序。对于如何构建健壮的系统,Rust 给出了非常工程化的解决方案。Rust 将系统中的异常分为了多个层次,分别给出了对应的处理手段。在这一章,读者将学习Rust 是如何以分层的错误处理解决方案来帮助开发者构建健壮系统的。 第10 章 模块化编程。现代编程语言的一大特色就是可以方便地进行模块化,这样有利于系统的设计、维护和协作。Rust 在模块化编程方面做得很好。这一章首先将介绍Rust 强大的包管理系统Cargo。然后会以真实的代码实例阐述Rust 的模块系统,并且将包含Rust 2018版本中模块系统的重大改进。最后将以一个完整的项目为例阐述如何使用Rust 开发自己的crate。 第11 章 安全并发。Rust 从两方面支持并发编程。首先,利用类型安全和内存安全的基础,解决了多线程并发安全中的痛点:数据竞争。Rust 可以在编译时发现多线程并发代码中的安全问题。其次,Rust 为了达成高性能服务器开发的目标,开始全面拥抱异步开发。这一章将从线程安全的通用概念开始,从Rust 多线程并发讲到异步并发支持,带领读者逐步形成全面、深入、通透的理解。 第12 章 元编程。元编程即程序生成程序的能力。Rust 为开发者提供了多种元编程能力。这一章将从反射开始介绍Rust 中的元编程。虽然Rust 的反射功能没有动态语言的那么强大,但是Rust 提供了强大的宏系统。这一章将从Rust 的编译过程出发,带领读者深入理解Rust的宏系统的工作机制,并且以具体的实例帮助读者理解编写宏的技巧。从声明宏到过程宏,再到编译器插件,以及第三方库syn 和quote 最新版的配合使用,都将在本章进行阐述。 第13 章 超越安全的边界。前面的章节内容基本都是建立在Safe Rust 的基础上的。而这一章将主要围绕Unsafe Rust 的内容来构建,主要分为4 大部分。首先将介绍Unsafe Rust 的基本语法和特性。然后,围绕基于Unsafe 进行安全抽象的核心,阐述Unsafe Rust 开发过程中可能引起未定义行为的地方,以及相应的解决方案。然后介绍FFI,通过具体的实例来阐述Rust 如何和其他语言交互,涉及C、C++、Ruby、Python、Node.js 等语言,还将介绍相关的第三方库。最后,将介绍未来互联网的核心技术WebAssembly,以及Rust 如何开发WebAssembly 和相关的工具链。 相信通过这13 章的内容,读者将会对Rust 有全面、深入和系统的认识。 勘误及更多资源 有人的地方就有Bug,此书当然也不例外。写书不仅是正确地传播知识和思想的途径,更是一种交流和沟通的方式。如果你发现本书中的任何错误、遗漏和解释不清楚的地方,欢迎提出反馈。 勘误说明:  直接提交issues。  标明具体的页码、行数和错误信息。  积极提出勘误者将获得合金Rust 勋章一枚。 更多的学习资源:  官方doc.rust-lang.org 列出了很多学习文档和资源。  订阅Rust 每日新闻1,了解Rust 社区生态发展,学习Rust。 致谢 首先,我要感谢Rust 社区中每一位帮助过我的朋友,没有你们的奉献,就没有这本书。 感谢Mike 组织社区编写的免费书籍Rust Primer。感谢Rust 社区中不知名的翻译者翻译官方的Rust Book。感谢知乎《Rust 编程》专栏作者辛苦的写作。感谢KiChjang、ELTON、CrLF0710、F001、Lingo、tennix、iovxw、wayslog、Xidorn、42、黑腹喵等其他社区里的朋友们,你们在我学习的过程中给予了我无私的帮助和解答,Rust 社区有你们真好。感谢知道我写作并一直鼓励和支持我的朋友们。衷心希望Rust 社区可以一直这么强大、温柔和友好。 然后,我要感谢电子工业出版社的刘恩惠编辑。感谢你给了我这个机会,让这本书从想法成为了现实。 最后,感谢我的妻子宋欣欣,因为她的温柔、大度、包容、信任和支持,才让我能够踏实且满含信心地做我自己想做的事。感谢我的父母,正是他们的培养,才使我具有积极、坚持不懈做事情的品格。

目录

第1 章 新时代的语言
1.1 缘起
1.2 设计哲学
1.2.1 内存安全
1.2.2 零成本抽象
1.2.3 实用性
1.3 现状与未来
1.3.1 语言架构
1.3.2 开源社区
1.3.3 发展前景
1.4 Rust 代码如何执行
1.5 小结
第2 章 语言精要
2.1 Rust 语言的基本构成
2.1.1 语言规范
2.1.2 编译器
2.1.3 核心库
2.1.4 标准库
2.1.5 包管理器
2.2 语句与表达式
2.3 变量与绑定
2.3.1 位置表达式和值表达式
2.3.2 不可变绑定与可变绑定
2.3.3 所有权与引用
2.4 函数与闭包
2.4.1 函数定义
2.4.2 作用域与生命周期
2.4.3 函数指针
2.4.5 CTFE 机制
2.4.6 闭包
2.5 流程控制
2.5.1 条件表达式
2.5.2 循环表达式
2.5.3 match 表达式与模式匹配
2.5.4 if let 和while let 表达式
2.6 基本数据类型
2.6.1 布尔类型
2.6.2 基本数字类型
2.6.3 字符类型
2.6.4 数组类型
2.6.5 范围类型
2.6.6 切片类型
2.6.7 str 字符串类型
2.6.8 原生指针
2.6.9 never 类型
2.7 复合数据类型
2.7.1 元组
2.7.2 结构体
2.7.3 枚举体
2.8 常用集合类型
2.8.1 线性序列:向量
2.8.2 线性序列:双端队列
2.8.3 线性序列:链表
2.8.4 Key-Value 映射表:HashMap 和BTreeMap
2.8.5 集合:HashSet 和BTreeSet
2.8.6 优先队列:BinaryHeap
2.9 智能指针
2.10 泛型和trait
2.10.1 泛型
2.10.2 trait
2.11 错误处理
2.12 表达式优先级
2.13 注释与打印
2.14 小结
第3 章 类型系统
3.1 通用概念
3.1.1 类型系统的作用
3.1.2 类型系统的分类
3.1.3 类型系统与多态性
3.2 Rust 类型系统概述
3.2.1 类型大小
3.2.2 类型推导
3.3 泛型
3.3.1 泛型函数
3.3.2 泛型返回值自动推导
3.4 深入trait
3.4.1 接口抽象
3.4.2 泛型约束
3.4.3 抽象类型
3.4.4 标签trait
3.5 类型转换
3.5.1 Deref 解引用
3.5.2 as 操作符
3.5.3 From 和Into
3.6 当前trait 系统的不足
3.6.1 孤儿规则的局限性
3.6.2 代码复用的效率不高
3.6.3 抽象表达能力有待改进
3.7 小结
第4 章 内存管理
4.1 通用概念
4.1.1 栈
4.1.2 堆
4.1.3 内存布局
4.2 Rust 中的资源管理
4.2.1 变量和函数
4.2.2 智能指针与RAII
4.2.3 内存泄漏与内存安全
4.2.4 复合类型的内存分配和布局
4.3 小结
第5 章 所有权系统
5.1 通用概念
5.2 所有权机制
5.3 绑定、作用域和生命周期
5.3.1 不可变与可变
5.3.2 绑定的时间属性——生命周期
5.4 所有权借用
5.5 生命周期参数
5.5.1 显式生命周期参数
5.5.2 省略生命周期参数
5.5.3 生命周期限定
5.5.4 trait 对象的生命周期
5.6 智能指针与所有权
5.6.1 共享所有权 Rc和Weak
5.6.2 内部可变性Cell和RefCell
5.6.3 写时复制Cow
5.7 并发安全与所有权
5.8 非词法作用域生命周期
5.9 小结
第6 章 函数、闭包与迭代器
6.1 函数
6.1.1 函数屏蔽
6.1.2 函数参数模式匹配
6.1.3 函数返回值
6.1.4 泛型函数
6.1.5 方法与函数
6.1.6 高阶函数
6.2 闭包
6.2.1 闭包的基本语法
6.2.2 闭包的实现
6.2.3 闭包与所有权
6.2.4 闭包作为函数参数和返回值
6.2.5 高阶生命周期
6.3 迭代器
6.3.1 外部迭代器和内部迭代器
6.3.2 Iterator trait
6.3.3 IntoIterator trait 和迭代器
6.3.4 迭代器适配器
6.3.5 消费器
6.3.6 自定义迭代器适配器
6.4 小结
第7 章 结构化编程
7.1 面向对象风格编程
7.1.1 结构体
7.1.2 枚举体
7.1.3 析构顺序
7.2 常用设计模式
7.2.1 建造者模式
7.2.2 访问者模式
7.2.3 RAII 模式
7.3 小结
第8 章 字符串与集合类型
8.1 字符串
8.1.1 字符编码
8.1.2 字符
8.1.3 字符串分类
8.1.4 字符串的两种处理方式
8.1.5 字符串的修改
8.1.6 字符串的查找
8.1.7 与其他类型相互转换
8.1.8 回顾
8.2 集合类型
8.2.1 动态可增长数组
8.2.2 映射集
8.3 理解容量
8.4 小结
第9 章 构建健壮的程序
9.1 通用概念
9.2 消除失败
9.3 分层处理错误
9.3.1 可选值Option
9.3.2 错误处理Result
9.4 恐慌(Panic)
9.5 第三方库
9.6 小结
第10 章 模块化编程
10.1 包管理
10.1.1 使用Cargo 创建包
10.1.2 使用第三方包
10.1.3 Cargo.toml 文件格式
10.1.4 自定义Cargo
10.2 模块系统
10.3 从零开始实现一个完整功能包
10.3.1 使用Cargo 创建新项目
10.3.2 使用structopt 解析命令行参数
10.3.3 定义统一的错误类型
10.3.4 读取CSV 文件
10.3.5 替换CSV 文件中的内容
10.3.6 进一步完善包
10.4 可见性和私有性
10.5 小结
第11 章 安全并发
11.1 通用概念
11.1.1 多进程和多线程
11.1.2 事件驱动、异步回调和协程
11.1.3 线程安全
11.2 多线程并发编程
11.2.1 线程管理
11.2.2 Send 和Sync
11.2.3 使用锁进行线程同步
11.2.4 屏障和条件变量
11.2.5 原子类型
11.2.6 使用Channel 进行线程间通信
11.2.7 内部可变性探究
11.2.8 线程池
11.2.9 使用Rayon 执行并行任务
11.2.10 使用Crossbeam
11.3 异步并发
11.3.1 生成器
11.3.2 Future 并发模式
11.3.3 async/await
11.4 数据并行
11.4.1 什么是SIMD
11.4.2 在Rust 中使用SIMD
11.5 小结
第12 章 元编程
12.1 反射
12.1.1 通过is 函数判断类型
12.1.2 转换到具体类型
12.1.3 非静态生命周期类型
12.2 宏系统
12.2.1 起源
12.2.2 Rust 中宏的种类
12.2.3 编译过程
12.2.4 声明宏
12.2.5 过程宏
12.3 编译器插件
12.4 小结
第13 章 超越安全的边界
13.1 Unsafe Rust 介绍
13.1.1 Unsafe 语法
13.1.2 访问和修改可变静态变量
13.1.3 Union 联合体
13.1.4 解引用原生指针
13.2 基于Unsafe 进行安全抽象
13.2.1 原生指针
13.2.2 子类型与型变
13.2.3 未绑定生命周期
13.2.4 Drop 检查
13.2.5 NonNull指针
13.2.6 Unsafe 与恐慌安全
13.2.7 堆内存分配
13.2.8 混合代码内存安全架构三大原则
13.3 和其他语言交互
13.3.1 外部函数接口
13.3.2 与C/C++语言交互
13.3.3 使用Rust 提升动态语言性能
13.4 Rust 与WebAssembly
13.4.1 WebAssembly 要点介绍
13.4.2 使用Rust 开发WebAssembly
13.4.3 打造WebAssembly 开发生态
13.5 小结
附录A Rust 开发环境指南
附录B Rust 如何调试代码

本书勘误

印次
  • 页码:16  •  行数:2-5  •  印次: 1

    Page 16,代码清单 2-5,第7行,
    println!(“{:?}”,other) 或许应该为 println!(“{:?}”,place2)

    liyucode 提交于 2019/1/29 17:34:55
    刘恩惠 确认于 2019/2/18 16:50:04
  • 页码:27  •  行数:8  •  印次: 1

    书中说:

    f64, 单精度64位浮点数,…

    查阅了相关资料,均说明 64位浮点数应为双精度浮点数。并且在rust官方文档中查到

    Floating-point numbers are represented according to the IEEE-754 standard. The f32 type is a single-precision float, and f64 has double precision.

    官方文档rustbook中 Datatypes

    提交于 2019/1/31 9:59:18
    刘恩惠 确认于 2019/2/18 16:46:57

读者评论

  • 页码:14 • 行数:14 • 印次: 1
    2.2语句与表达式
    书中说 “除非使用#[no_std]属性明确指定了不需要标准库”
    “#[no_std]”少了感叹号
    应该是“除非使用#![no_std]属性明确指定了不需要标准库”

    BONE发表于 2021/3/3 13:45:26
  • 代码清单2.5

    编译并不会出错,作者对所有权理解有误。

    fn main() {
        let place1 = "hello";
        let place2 = "hello".to_string();
    
        let other = place1;
        println!("{:?}", other);
    
        let other = place2;
        println!("{:?}", other);
    }
    
    buf1024发表于 2020/9/23 10:30:29
    • 你这代码都抄错了 最后一行是要输出place2 会编译报错的

      WangPengJu发表于 2020/10/11 21:17:31
  • 其他平台电子书会同步博文视点电子书更新吗

    请问亚马逊、京东这样的电子书平台会跟随博文视点电子书更新吗,还是他们有自己的节奏?

    xffish发表于 2020/7/27 21:21:49
    • 一般情况下是同步更新的哈!

      刘恩惠发表于 2020/8/7 17:09:53
  • warning
    warning and error
    tao-of-rust-code-master 安装不通过,nightly和stable 都不行

    乐干面发表于 2020/5/13 12:39:44
  • 看到github上有提这个错误,作者也修改了,应该在新版的印刷种,电子版什么时候更新?

    gm3000发表于 2019/8/22 11:07:10
    • 您好,一般在纸质书每次重印时会将勘误更正过来,电子版会根据纸质书重印的版本重新制作电子文件,一般电子书的更新会滞后于纸质书,我们已经和数字出版中心反映了情况,应该会很快更新,给您带来不便请谅解!

      刘恩惠发表于 2019/9/4 9:52:02

电子书版本

  • Epub

相关博文

  • 微软喜提Rust拟替代C/C++?凭什么!

    微软喜提Rust拟替代C/C++?凭什么!

    管理员账号 2019-07-22

    近日 @开源中国 一则消息引发热议:微软计划将 Rust 作为 C 和 C++ 的安全替代品。 根据微软安全响应中心提供的数据,所有微软年度补丁中约有 70% 是针对内存安全漏洞的修复程序。这样高的百分比是因为 Windows 和大...

    管理员账号 2019-07-22
    1494 0 1 0

相关图书

算法训练营:入门篇(全彩版)

本书图文并茂、通俗易懂,详细讲解常用的算法知识,又融入了大量的竞赛实例和解题技巧,可帮助读者熟练应用各种算法解决实际问题。 本书总计9章。第1章讲解C++基础...

 

亿级流量系统架构设计与实战

李琛轩 (作者)

本书涵盖了亿级用户应用后台通用的技术和系统架构设计思路,在内容结构上分为三大篇:架构知识篇(第1~3章),作为全书的基础知识篇,首先介绍后台的关键组件构成以及机...

 

算法笔记(第2版)

刁瑞 谢妍 (作者)

ChatGPT掀起了现象级的风暴,赶超ChatGPT潮流,算法突破是关键。 本书介绍了若干常见算法,涉及排序、哈希、动态规划与近似算法、高斯消去法、图论与线性...

 

看漫画学Python:有趣、有料、好玩、好用(全彩修订版)

关东升 著 赵大羽 绘 (作者)

ython是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要,成为国家计算机等...

 

Linux从入门到精通

张启玉 (作者)

本书以CentOS 7.8为演示系统,以阿里云为演示服务器,从Linux常用命令入手,从一毕业就要入职公司的上手要求出发,重实战、轻原理,目的就是要带领读者从一...

 

看漫画学Python 2:有趣、有料、好玩、好用(全彩进阶版)

关东升 ,赵大羽 (作者)

本书是《看漫画学Python》的进阶版本,继续秉承有趣、有料、好玩、好用的理念,并继续采用《看漫画学Python》一书中3个不同的漫画人物角色,通过这3个角色之...