深入浅出Rust

所需积分/C币:19 2018-10-30 10:56:08 3.5MB PDF

Rust是一门新的编程语言。 我想,大部分读者看到本书,估计都会不约而同地想到同样的问 题:现存的编程语言已经多得数不清了,再发明一种新的编程语言有何 意义?难道现存的那么多编程语言还不够用吗,发明一种新的编程语言 能解决什么新问题? 俗话说,工欲善其事,必先利其器。在程序员平时最常用的工具排 行榜中,编程语言当仁不让的是最重要的“器”。编程语言不仅是给程序 设计者使用的工具,反过来,它也深刻地影响了设计者本身的思维方式 和开发习惯。 卓越的编程语言,可以将优秀的设计、先进的思想、成功的经验, 自然而然地融入其中,使更多的使用者开阔眼界、拓展思路,受益无 穷
目录 前言 第一部分基础知识 第1章与君初相见 1.1版本和发布策略 1.2安装开发环境 1.3 Hello World 1.4 Prelude 15 Format格式详细说明 第2章变量和类型 2.1变量声明 22基本数据类型 2.3复合数据类型 第3章语句和表达式 31语句 32表达式 3.3 if-else 第4章函数 4.1简介 4.2发散函数 4.3main函数 4.4 const fn 4.5函数递归调用 第5章 trait 51成员方法 5.2静态方法 5.3扩展方法 54完整函数调用语法 55 trait约束和继承 5.6 Derive 57trai别名 58标准库屮常见的 trait简介 59总结 第6章数组和字符串 6.1数组 6.2字符串 第7章模式解构 7.1简介 7.2 match 7.3if-let和 while-let 7.4函数和闭包参数做模式解构 7.5总结 第8章深入类型系统 81代数类型系统 8.2 Never Type 8.3再谈 Option类型 第9章宏 9.1简介 macro 9.2示范型宏 93宏11 第二部分内存安全 第10章内存管理基础 10.1堆和栈 102段错误 10.3内存安全 第11章所有权和移动语义 11.1什么是所有权 112移动语义 11.3复制语义 11.4Box类型 11.5 Clone VS Copy 11.6析构函数 第12章借用和生命周期 12.1生命周期 12.2借用 12.3借用规则 12.4生命周期标记 125省略生命周期标记 第13章借用检查 13.1编译错误示例 13.2内存不安全示例:修改枚举 13.3内存不安全示例:迭代器失效 13.4内存不安仝示例:悬空指针 135小结 第14章NLL(Non- Lexical- Lifetime) 14.1NLL希望解决的问题 14.2NLL的原理 143小结 第15章内部可变性 15.1 Cell 15. 2 RefCell 15.3 UnsafeCell 第16章解引用 16.1自定义解引用 162自动解引用 16.3自动解引用的用处 16.4有时候需要手动处理 16.5智能指针 16.6小结 第17章泄漏 17.1内存泄漏 17.2内存泄漏属于内存安全 17.3析构函数泄漏 第18章 Panic 18,1什么是 panic 182 Panic实现机制 18.3 Panic Safety 184小结 第19章 Unsafe 191 unsafe关键字 192裸指针 193内置函数 19.4分割借用 19.5协变 19.6未定义行为 197小结 第20章Vec源码分析 20.1内存申请 20.2内存扩容 20.3内存释放 20.4不安全的边界 20.5自定义解引用 20.6迭代器 20.7 panic safety 第三部分高级抽象 第21章泛型 21.1数据结构中的泛型 212函数中的泛型 21.3impl块中的泛型 214泛型参数约束 215关联类型 21.6何时使用关联类型 217泛型特化 第22章闭包 22.1变量捕获 22.2move关键字 22.3 Fn/FnMut/Nonce 224闭包与泛型 22.5闭包与生命周期 第23章动态分派和静态分派 23.1 trait object 23.2 object safe 23.3 impl trait 第24章容器与迭代器 241容器 24.2迭代器 第25章生成器 251简介 252对比迭代器 253对比立即求值 254生成器的原理 25.5协程简介 第26章标准库简介 26.1类型转换 26.2运算符重载 26.3I0 26.4 Any 第四部分线程安全 第27章线程安全 27.1什么是线程 272启动线程 273免数据竞争 27.4 Send sync 第28章详解Send和Sync 281什么是Send 28.2什么是Sync 28.3自动推理 284小结 第29章状态共享 29.1A 29.2 Mutex 29.3 RWLock 29 4 Atomic 295死锁 29.6 Barrier 29.7 Condvar 29.8全局变量 299线程局部存储 29.10总结 第30章管道 30.1异步管道 30.2同步管道 第31章第三方并行开发库 31.1 threadpool 31.2 scoped-threadpool 31.3 parking_lot 31.4 crossbeam 31.5 rayon 第五部分实用设施 第32章项目和模块 32.1 cargo 32.2项目依赖 32.3模块管理 第33章错误处理 331基本错误处理 332组合错误类型 33.3问号运算符 334main函数中使用问号运算符 335新的 Failure库 第34章FFI 341什么是FFI 342从C调用Rust库 34.3从Rust调用C库 344更复杂的数据类型 第35章文档和测试 351文档 352测试 附录词汇表 A language that doesnt affect the way you think about programming is not worth knowing. alan perlis Rust简介 Rust是一门新的编程语言 我想,大部分读者看到本书,估计都会不约而同地想到同样的问 颕:现存的编程语言已经多得数不清了,再发明一种新的编程语言有何 意义?难道现存的那么多编程语言还不够用吗,发明一种新的编程语言 能解决什么新问题? 俗话说,工欲善其事,必先利其器。在程序员平时最常用的工具排 行榜中,编程语言当仁不让的是最重要的“器”。编程语言不仅是给程序 设计者使用的工具,反过来,它也深刻地影响了设计者本身的思维方式 和开发习惯 卓越的编程语言,可以将优秀的设计、先进的思想、成功的经验 自然而然地融入其中,使更多的使用者开阔眼界、拓展思路,受益无 穷 a programming language is a tool that has profound influence on our thinking habits edsger dij kstra 所以说关于这个问题,我认为,如果与现有的各种语言相比,新设 计的语言有所进步、有所发展、有所创新,那么它的出现就很有意义。 最近这些年,的确涌现岀了一大批编程语言,可以说是百花争艳、 繁华似锦。但是在表面的繁荣之下,我们是否可以自满地说,编程语言 的设计和发展已经基本成熟、趋于完美了呢?恐怕不尽然吧! 那些优秀的编程语言中,不少都有自己的“绝活”。有的性能非常 高,有的表达力非常强,有的擅长组织大型程序,有的适合小巧的脚 本,有的专注于并发,有的偏重于科学计算,等等,不一而足。即便如 此,新兴的 Rusty语言面市后依旧展现岀了它的独特魅力,矫矫不群,非 常值得大家关注。 作为多年来鲜有的新一代系统编程语言,它的设计准则是“安全, 并发,实用”。Rust的设计者是这样定位这门语言的: Rust is a system's programming language that runs blazingly fast prevents segfaults, and guarantees thread safety 安全 是的,安全性很重要。Rust最重要的特点就是可以提供内存安全保 证,而且没有额外的性能损失。 在传统的系统级编程语言(C/C++)的开发过程中,经常岀现因各 种内存错误引起的崩溃或bug。比如空指针、野指针、内存泄漏、内存 越界、段错误、数据竞争、迭代器失效等,血汨斑斑,数不胜数。这些 问题不仅在教科书中被无数次提起,而且在实践中也极其常见。因此, 各种髙手辛苦地总结了大量的编程经验,许多代码检査和调试工具被开 发岀来,各种代码开发流程和规范被制定岀来,无数人呕心沥血就是为 了系统性地防止各类bug的岀现。尽管如此,我们依然无法彻底解决这 些问题。 教科书解决不了问题,因为教育不是强制性的;静态代码检查工具 解决不了问题,因为传统的CC艹+对静态代码检査不友好,永远只能査 出一部分问题;软件工程解决不了问题,因为规范依赖于执行者的素 质,任何人都会犯错误。事后 debug也不是办法,解决bug的代价更高。 鉴于手动内存管理非常容易出问题,因此先辈们发明了一种自动垃 圾回收的机制( Garbage Collection),故而程序员在绝大多数情况下不 用再操心内存释放的问题。新发明的绝大多数编程语言都使用了基于各 种高级算法的自动垃圾回收机制,因为它确实方便,解放了程序员的大 脑,使大家能更专注于业务逻辑的部分。但是到目前为止,不管使用哪 种算法的GC系统,在性能上都要付出比较大的代价。要么需要较大的 运行时占用较大内存,要么需要暂停整个程序,要么具备不确定性的时

...展开详情

评论 下载该资源后可以进行评论 6

chenming1990118 非常不错的rust书
2019-07-01
回复
cdsler 非常不错的
2019-06-23
回复
vkchenzhirong 很全面,学习了
2019-05-12
回复
zhaorunzhi 非常不错,值得好好学习一下。
2019-04-15
回复
Minatl 非常不错的rust书
2019-02-10
回复
img
darling__

关注 私信 TA的资源

上传资源赚积分,得勋章
相关内容推荐