新書推薦:

《
厨房药房:用香料和药草疗愈身心
》
售價:HK$
54.8

《
稳富:悄悄存钱,稳稳变富
》
售價:HK$
63.8

《
神圣罗马帝国
》
售價:HK$
140.8

《
优势累积:给中国家庭的松弛父母课
》
售價:HK$
64.7

《
汗青堂丛书163——狄仁杰与武则天:武周革命与平民官僚的崛起
》
售價:HK$
96.8

《
历史、神话与艺术:东西方文化的解读和比较
》
售價:HK$
74.8

《
在别处安家:关于逃离、生存与梦想破碎之地
》
售價:HK$
74.8

《
棉花王国 密西西比河流域的奴隶制与资本主义 (一部改写美国奴隶制认知的史学佳作)
》
售價:HK$
129.8
|
| 編輯推薦: |
|
想写出安全、地道的高质量Rust代码,却被生命周期、trait用法、工程化规范难住?本书为你而来!OReilly经典系列重磅新作,作者提炼35个核心有效方法,从类型系统、trait设计到依赖管理、工具实操,全流程拆解Rust编程精髓。书中聚焦惯用法与内存安全,搭配编译器优化技巧与实战案例,不管你是有基础的Rust学习者,还是寻求进阶的开发者,都能快速夯实核心能力,写出规范、高效的工业级Rust代码!
|
| 內容簡介: |
|
本书是Rust编程进阶指南,面向有基础的学习者。第1章讲解类型系统,涵盖基本类型、枚举等及类型转换等技巧;第2章聚焦Traits,介绍标准库Traits及设计原则;第3章解析生命周期、借用检查器等核心概念;第4章探讨依赖项管理,包括语义化版本、可见性等;第5章介绍文档、宏、测试等工具使用;第6章涉及no_std环境、FFI交互等进阶内容。全书通过具体条款提供实用建议,帮助读者写出规范、高效的Rust代码。如果你是一名具备现有编译型语言经验的软件工程师,或者你在将Rust语法的基础理解转化为实际可运行的程序时遇到了困难,那么这本书正是为你量身打造的。本书聚焦于Rust与其他编译型语言之间的概念差异,并提供了程序员可轻松遵循的具体建议。通过学习本书,你将很快写出流畅的Rust代码,而非蹩脚的“C++翻译版”代码。
|
| 關於作者: |
|
David Drysdale是Google的高级软件工程师,自2019年起便从事Rust相关工作,主要聚焦安全领域。他牵头用Rust重写了Android的硬件加密子系统,还主导了加密库Tink的Rust移植工作。他还涉足C/C++和Go语言开发,参与过Linux内核研发、移动视频会议应用开发等各类项目。
|
| 目錄:
|
目录 前言1 第1章 类型5 第1条:使用类型系统表示数据结构5 第2条:使用类型系统表达常见行为13 第3条:优先选择Option和Result转换,而非显式match表达式22 第4条:优先使用惯用的Error类型27 第5条:理解类型转换34 第6条:拥抱newtype模式40 第7条:对复杂类型使用构造器45 第8条:熟悉引用和指针类型51 第9条:考虑使用迭代器转换代替显式循环62 第2章 trait75 第10条:熟悉标准库的trait75 第11条:为RAII模式实现Drop trait86 第12条:理解泛型和trait对象之间的权衡91 第13条:使用默认实现来减少需要实现的trait方法99 第3章 概念101 第14条:理解对象生命周期101 第15条:理解借用检查器118 第16条:避免写unsafe代码136 第17条:对共享状态的并行性保持警惕138 第18条:不要panic151 第19条:避免反射154 第20条:避免过度优化的诱惑160 第4章 依赖项166 第21条:理解语义化版本166 第22条:最小化可见性171 第23条:避免通配符导入175 第24条:重新导出在API中所用的依赖项类型177 第25条:管理依赖图180 第26条:警惕特性蔓延186 第5章 工具191 第27条:为公共接口撰写文档191 第28条:在合适的时候使用宏196 第29条:遵循Clippy的建议210 第30条:不仅仅是单元测试213 第31条:使用生态系统工具221 第32条:搭建持续集成系统223 第6章 超越标准Rust228 第33条:考虑使库代码与no_std兼容228 第34条:控制跨越FFI边界的内容233 第35条:优先使用bindgen而不是手动FFI映射245 后记248
|
| 內容試閱:
|
前言 代码更像是指导原则,而不是实际规则。 —Hector Barbossa 在众多现代编程语言中,Rust与众不同。Rust提供了编译语言的速度、非垃圾回收语言的高效以及函数式语言的类型安全,同时,还提供了解决内存安全问题的独特方案。因此,Rust经常被评为最受欢迎的编程语言( />Rust类型系统的强大和一致性意味着,如果一个Rust程序能够编译通过,那么它可以正常工作的可能性已经相当大了,这种现象之前只存在Haskell等更偏学术性且晦涩难懂的语言中。如果一个Rust程序能够编译通过,那么它也将安全地工作。 然而,这种安全(包括类型安全和内存安全)确实是有代价的。尽管基本文档的质量很高,但Rust还是以入门门槛高而闻名,初学者必须经历与借用检查器“斗智斗勇”、重新设计数据结构以及被生命周期搞糊涂等入门仪式。虽然Rust程序一旦编译通过第一次运行时就很有可能正常工作,但是要想让程序成功编译,实则困难重重,即便Rust编译器提供了极为有用的错误诊断信息,也依然如此。 读者对象 本书试图为那些面临上述棘手问题的程序员提供帮助,即便他们已有C++等现有编译语言的使用经验。因此,与其他Effective系列书籍一样,本书适合作为Rust初学者的第二本读物—在他们已经通过其他途径[例如,The Rust Programming Language(Steve Klabnik和Carol Nichols,No Starch Press)或Programming Rust(Jim Blandy等人, O’Reilly)]掌握基础知识之后阅读。 然而,Rust的安全性使得本书中的建议与Scott Meyers的Effective C++系列相比,侧重点略有不同。C++语言充满了陷阱,所以Effective C++基于C++软件开发的实际经验, 提供了一系列避免这些陷阱的建议。重要的是,它包含的是指导原则而不是规则,因为指导原则总是有例外—通过详细阐述指导原则形成及使用的理由,读者可以自行决定特定情况下是否需要违反原则。 本书依然保留了提供建议并阐明背后原因这一总体风格。但是,由于Rust几乎没有陷阱,因此这里的建议更多地集中在Rust引入的概念上。许多建议的标题都是“理解……”和“熟悉……”,旨在帮助读者写出流畅、地道的Rust代码。 Rust的安全性还使得本书完全没有出现标题为“永远不要……”的条目。如果某事真的不应该做,那么编译器通常会阻止你这样做。 Rust版本 本书是基于Rust 2018版及稳定工具链编写的。Rust的后向兼容性承诺( />这里的条目没有涵盖Rust的任何异步功能( Async Rust。 书中代码段和错误信息所使用的具体rustc版本是1.70。代码段不太可能需要针对更高版本进行更改,但错误信息可能会因你使用的特定编译器版本而有所不同。本书中收录的错误信息都经过手动编辑,以适应版面的宽度限制,除此之外都是编译器生成的。 本书中有许多对其他静态类型语言的引用和比较,如Java、Go和C++,旨在帮助有这些语言经验的读者定位自己( C++可能是与Rust相似度最高的语言,特别是当C++11的移动语义发挥作用时)。 本书导读 本书共6章: 第1章介绍关于Rust核心类型系统的建议。 第2章介绍关于使用Rust trait的建议。 第3章介绍构成Rust设计核心思想的概念。 第4章介绍关于使用Rust依赖项的建议。 第5章介绍除了Rust编译器之外,改善代码库的工具。 第6章介绍当你需要在Rust标准、安全环境之外工作时的建议。 虽然第3章可能比第1章和第2章更基础,但刻意把它放在第3章,以便让按顺序从头阅读的读者可以先建立一些信心。 排版约定 本书中使用以下排版约定: 斜体(Italic) 表示新的术语、URL、电子邮件地址、文件名和文件扩展名。 等宽字体(Constant width) 用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。
O’Reilly在线学习平台(O’Reilly Online Learning) 40多年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。 我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问 />如何联系我们 对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。 美国: O’Reilly Media,Inc. 1005 Gravenstein Highway North Sebastopol,CA 95472 中国: 北京市西城区西直门南大街2号成铭大厦C座807室(100035) 奥莱利技术咨询(北京)有限公司 对于本书中文版的勘误内容,请发送电子邮件至errata@oreilly.com.cn。 本书配套网站 />关于书籍、课程、会议和新闻的更多信息,请访问我们的网站 />我们在LinkedIn上的地址: />我们在YouTube上的地址: />致谢 衷心感谢所有帮助我完成本书的朋友们: 技术审校者对本书的所有方面提供了专业和详细的反馈:Pietro Albini、Jess Males、Mike Capp,特别是Carol Nichols。 O’Reilly的编辑团队:Jeff Bleiel、Brian Guerin和Katie Tozer。 Tiziano Santoro,最初我从他那里学到了许多关于Rust的知识。 Danny Elfanbaum,他为本书的AsciiDoc格式处理提供了重要技术支持。 早期网络版的读者,特别是: Julian Rosse指出了在线文本中数十处拼写和表述错误。 Martin Disch对多个章节提出了改进建议并修正了不准确之处。 Chris Fleetwood、Sergey Kaunov、Clifford Matthews、Remo Senekowitsch、Kirill Zaborsky,以及一位匿名Proton Mail用户,均指出了书中的错误。 我的家人,他们包容了我许多因写作而分心的周末。
|
|