內容大鋼
本書主要介紹Rust編程,作為一名資深企業開發人員,作者將Rust編程的相關知識熟練地組織成簡短的章節,讓你能快速上手。從類型到賦值,再到ownership、lifetimes、traits和crates,本書先從基礎開始,徹底揭開Rust技術的神秘面紗,讓讀者清楚明白這門語言的魅力所在。最後,作者還針對單元測試、處理不安全代碼、與遺留代碼庫互操作以及使用Rust日益強大的工具提供了不可或缺的專家建議。本書適合對Rust感興趣的所有級別的開發人員閱讀。
作者介紹
(美)多尼斯·馬歇爾|責編:劉鋒//馮潤峰|譯者:唐剛//陶克勤//張漢東
目錄
譯者序
第1章 Rust簡介
1.1 簡介
1.1.1 函數式編程
1.1.2 面向表達式編程
1.1.3 面向模式編程
1.2 特性
1.2.1 安全性
1.2.2 所有權
1.2.3 生命周期
1.2.4 無畏併發
1.2.5 零成本抽象
1.3 Rust術語
1.4 工具
1.5 總結
第2章 入門
2.1 準備工作
2.2 Rust和Windows
2.3 安裝Rust
2.4 Rustup高級主題
2.5 「Hello,World」
2.6 編譯並運行
2.7 cargo
2.8 庫
2.9 註釋
2.10 crate倉庫
2.11 main函數
2.12 命令行參數
2.13 總結
第3章 變數
3.1 術語
3.2 變數簡介
3.3 原生類型
3.4 整數類型
3.5 溢出
3.6 字面量標注
3.7 浮點數類型
3.8 浮點數常量
3.9 無限
3.10 NaN
3.11 數字範圍
3.12 顯式類型轉換
3.13 布爾類型
3.14 字元
3.15 指針
3.16 運算符
3.17 總結
第4章 字元串
4.1 str
4.2 字元串簡介
4.2.1 長度
4.2.2 擴展字元串
4.2.3 容量
4.2.4 訪問字元串的值
4.2.5 字元串里的字元
4.2.6 Deref強制轉換
4.2.7 格式化的字元串
4.2.8 實用函數
4.3 總結
第5章 控制台
5.1 輸出
5.2 位置參數
5.3 變數參數
5.4 命名參數
5.5 填充、對齊和精度
5.6 進位
5.7 開發者友好
5.8 write!宏
5.9 Display trait
5.10 Debug trait
5.11 format!宏
5.12 控制台讀寫
5.13 總結
第6章 控制流
6.1 if表達式
6.2 while表達式
6.3 for表達式
6.4 loop表達式
6.4.1 loop break表達式
6.4.2 loop標籤
6.5 Iterator trait
6.6 總結
第7章 集合
7.1 數組
7.1.1 多維數組
7.1.2 訪問數組元素
7.1.3 切片
7.1.4 數組的比較
7.1.5 迭代
7.1.6 隱式轉換
7.2 向量
7.2.1 多維向量
7.2.2 訪問向量元素
7.2.3 迭代
7.2.4 調整大小
7.2.5 容量
7.3 HashMap
7.3.1 創建一個HashMap
7.3.2 訪問HashMap
7.3.3 更新條目
7.3.4 迭代
7.4 總結
第8章 所有權
8.1 棧內存和堆內存
8.2 淺拷貝與深拷貝
8.3 汽車類比
8.4 移動語義
8.5 借用
8.6 複製語義
8.7 Clone trait
8.8 用於淺拷貝的Copy trait
8.9 用於深拷貝的Clone trait
8.10 總結
第9章 生命周期
9.1 生命周期簡介
9.2 函數和生命周期
9.3 生命周期標注
9.4 生命周期省略
9.5 複雜的生命周期
9.6 共享生命周期
9.7 靜態生命周期
9.8 結構體和生命周期
9.9 方法和生命周期
9.10 子類型化生命周期
9.11 匿名生命周期
9.12 泛型和生命周期
9.13 總結
第10章 引用
10.1 聲明
10.2 借用
10.3 解引用
10.4 引用的比較
10.5 引用標記
10.6 引用的引用
10.7 可變性
10.8 多重借用的限制
10.9 總結
第11章 函數
11.1 函數定義
11.2 參數
11.3 函數返回值
11.4 常函數
11.5 嵌套函數
11.6 函數指針
11.7 函數別名
11.8 總結
第12章 錯誤處理
12.1 處理錯誤
12.2 Result枚舉
12.3 Option枚舉
12.4 panic
12.4.1 panic!宏
12.4.2 處理panic
12.5 unwrap
12.6 Result和Option的模式匹配
12.7 map
12.8 富錯誤
12.9 自定義錯誤
12.10 總結
第13章 結構體
13.1 其他初始化方法
13.2 移動語義
13.3 可變性
13.4 方法
13.5 self
13.6 關聯函數
13.7 impl塊
13.8 運算符重載
13.8.1 一元運算符重載
13.8.2 二元運算符重載
13.9 元組結構體
13.10 總結
第14章 泛型
14.1 泛型函數
14.2 約束
14.3 where子句
14.4 泛型結構體
14.5 關聯函數
14.6 枚舉
14.7 泛型trait
14.8 顯式特化
14.9 總結
第15章 模式
15.1 let語句
15.2 通配符
15.3 複雜模式
15.4 所有權
15.5 不可反駁模式
15.6 範圍模式
15.7 多個模式
15.8 控制流
15.9 結構體
15.10 函數
15.11 match表達式
15.12 匹配守衛
15.13 總結
第16章 閉包
16.1 「Hello,World」
16.2 閉包語法
16.3 捕獲變數
16.4 閉包作為函數參數
16.5 閉包作為函數返回值
16.6 閉包的實現
16.6.1 Fn trait
16.6.2 FnMut trait
16.6.3 FnOnce trait
16.6.4 move關鍵字
16.6.5 impl關鍵字
16.7 矩陣示例
16.8 總結
第17章 trait
17.1 定義trait
17.2 默認實現
17.3 標記trait
17.4 關聯函數
17.5 關聯類型
17.6 擴展方法
17.7 完全限定語法
17.8 supertrait
17.9 靜態分發
17.10 動態分發
17.11 枚舉和trait
17.12 總結
第18章 線程1
18.1 同步函數調用
18.2 線程
18.3 Thread類型
18.4 CPU執行時間
18.5 線程Builder
18.6 通信順序進程
18.7 非同步通道
18.8 同步通道
18.9 rendezvous通道
18.10 try方法
18.11 商店示例
18.12 總結
第19章 線程2
19.1 互斥
19.2 非作用域互斥體
19.3 互斥體中毒
19.4 讀寫鎖
19.5 條件變數
19.6 原子操作
19.6.1 存儲和載入
19.6.2 獲取和修改
19.6.3 比較和交換
19.7 總結
第20章 內存
20.1 棧
20.2 靜態值
20.3 堆
20.4 內部可變性
20.5 RefCell
20.6 OnceCell
20.7 總結
第21章 宏
21.1 詞條
21.2 聲明宏
21.2.1 重複構造
21.2.2 多個宏匹配器
21.3 過程宏
21.3.1 派生宏
21.3.2 屬性宏
21.3.3 類函數宏
21.4 總結
第22章 互操作性
22.1 外部函數介面
22.2 基礎示例
22.3 libc crate
22.4 結構體
22.5 bindgen
22.6 C調用Rust函數
22.7 cbindgen
22.8 總結
第23章 模塊
23.1 模塊項
23.1.1 模塊文件
23.1.2 path屬性
23.2 函數和模塊
23.3 crate、super和self關鍵字
23.4 遺留模式
23.5 總結