- 歡迎參加 Comprehensive Rust 🦀 課程
- 1. 講授課程
❱
- 1.1. 課程架構
- 1.2. 鍵盤快速鍵
- 1.3. 翻譯
- 2. 使用 Cargo
❱
- 2.1. Rust 生態系統
- 2.2. 程式碼範例
- 2.3. 在本機執行 Cargo
- 第 1 天:上午
- 3. 歡迎
- 4. Hello, World
❱
- 4.1. 什麼是 Rust?
- 4.2. Rust 的優點
- 4.3. Playground
- 5. 型別和值
❱
- 5.1. Hello, World
- 5.2. 變數
- 5.3. 值
- 5.4. 算術
- 5.5. 字串 (String)
- 5.6. 型別推斷
- 5.7. 練習:費波那契數列
❱
- 5.7.1. 解決方案
- 6. 基本的控制流程概念
❱
- 6.1. if 表達式
- 6.2. for 迴圈
❱
- 6.2.1. for
- 6.2.2. loop 迴圈
- 6.3. break 和 continue
❱
- 6.3.1. 標籤
- 6.4. 區塊 (block) 和範疇 (scope)
❱
- 6.4.1. 範圍和遮蔽
- 6.5. 函式
- 6.6. 巨集
- 6.7. 練習:考拉茲序列
❱
- 6.7.1. 解決方案
- 第 1 天:下午
- 7. 歡迎
- 8. 元組和陣列
❱
- 8.1. 陣列
- 8.2. 元組
- 8.3. 疊代器
- 8.4. 模式配對
- 8.5. 練習:巢狀陣列
❱
- 8.5.1. 解決方案
- 9. 參照
❱
- 9.1. 共用列舉
- 9.2. 迷途參照
- 9.3. 練習:幾何圖形
❱
- 9.3.1. 解決方案
- 10. 使用者定義的型別
❱
- 10.1. 結構體
- 10.2. 元組結構體
- 10.3. 列舉
- 10.4. 靜態和常數
- 10.5. 型別別名
- 10.6. 練習:電梯事件
❱
- 10.6.1. 解決方案
- 第 2 天:上午
- 11. 歡迎
- 12. 模式配對
❱
- 12.1. Matching Values
- 12.2. 解構列舉
- 12.3. 控制流程
- 12.4. 練習:運算式求值
❱
- 12.4.1. 解決方案
- 13. Read 和 Write
❱
- 13.1. 方法
- 13.2. 特徵
❱
- 13.2.1. 實作不安全的特徵
- 13.2.2. Associated Types
- 13.3. 衍生特徵
- 13.4. 練習:泛型 Logger
❱
- 13.4.1. 解決方案
- 14. 泛型
❱
- 14.1. Extern 函式
- 14.2. 泛型資料型別
- 14.3. 特徵界限
- 14.4. impl Trait
- 14.5. 練習:泛型 min
❱
- 14.5.1. 解決方案
- 第 2 天:下午
- 15. 歡迎
- 16. 標準函式庫
❱
- 16.1. 標準函式庫
- 16.2. 說明文件測試
- 16.3. Option
- 16.4. Result
- 16.5. String
- 16.6. Vec
- 16.7. HashMap
- 16.8. 練習:計數器
❱
- 16.8.1. 解決方案
- 17. 標準函式庫
❱
- 17.1. 比較
- 17.2. 疊代器
- 17.3. From 和 Into
- 17.4. 測試
- 17.5. Read 和 Write
- 17.6. Default (結構體更新語法)
- 17.7. 閉包
- 17.8. 練習:ROT13 (迴轉13位)
❱
- 17.8.1. 解決方案
- 第 3 天:上午
- 18. 歡迎
- 19. 記憶體管理
❱
- 19.1. 檢查程式記憶體
- 19.2. 自動記憶體管理
- 19.3. 所有權
- 19.4. 移動語意
- 19.5. Clone
- 19.6. Copy 型別
- 19.7. Drop
- 19.8. 練習:建構工具型別
❱
- 19.8.1. 解決方案
- 20. 智慧指標
❱
- 20.1. Box<T>
- 20.2. Rc
- 20.3. 特徵物件
- 20.4. 練習:二元樹
❱
- 20.4.1. 解決方案
- 第 3 天:下午
- 21. 歡迎
- 22. 借用
❱
- 22.1. 借用
- 22.2. 借用
- 22.3. 內部可變性 (Interior Mutability)
- 22.4. 練習:衛生統計資料
❱
- 22.4.1. 解決方案
- 23. 生命週期
❱
- 23.1. Slices: &\[T\]
- 23.2. 迷途參照
- 23.3. 函式呼叫中的生命週期
- 23.4. 生命週期
- 23.5. 生命週期
- 23.6. 練習:Protobuf 剖析
❱
- 23.6.1. 解決方案
- 第 4 天:上午
- 24. 歡迎
- 25. 疊代器
❱
- 25.1. Iterator
- 25.2. IntoIterator
- 25.3. FromIterator
- 25.4. 練習:疊代器方法鏈結
❱
- 25.4.1. 解決方案
- 26. 模組
❱
- 26.1. 模組
- 26.2. 檔案系統階層
- 26.3. 能見度
- 26.4. use、super、self
- 26.5. 練習:GUI 程式庫的模組
❱
- 26.5.1. 解決方案
- 27. 測試
❱
- 27.1. 測試模組
- 27.2. 其他資源
- 27.3. 編譯器檢查 (Lint) 和 Clippy
- 27.4. 盧恩演算法
❱
- 27.4.1. 解決方案
- 第 4 天:下午
- 28. 歡迎
- 29. 錯誤處理
❱
- 29.1. 恐慌
- 29.2. 疊代器
- 29.3. 隱含轉換
- 29.4. Drop 特徵
- 29.5. From 和 Into
- 29.6. 使用 Result 進行結構化錯誤處理
❱
- 29.6.1. 解決方案
- 30. 不安全的 Rust
❱
- 30.1. 不安全的 Rust
- 30.2. 對裸指標解參考
- 30.3. 可變的靜態變數
- 30.4. 聯合體
- 30.5. 呼叫不安全的函式
- 30.6. 實作不安全的特徵
- 30.7. 練習:封裝外部函式介面 (FFI)
❱
- 30.7.1. 解決方案
- Android
- 31. 歡迎
- 32. 設定
- 33. 建構規則
❱
- 33.1. 二進位檔
- 33.2. 函式庫
- 34. AIDL
❱
- 34.1. Birthday Service Tutorial
❱
- 34.1.1. 介面
- 34.1.2. Service API
- 34.1.3. 伺服器
- 34.1.4. 伺服器
- 34.1.5. 部署
- 34.1.6. 用戶端
- 34.1.7. 改寫 API
- 34.1.8. 實作
- 34.2. 類型
❱
- 34.2.1. Primitive Types
- 34.2.2. 陣列
- 34.2.3. 特徵物件
- 34.2.4. 變數
- 34.2.5. Sending Files
- 35. 測試
❱
- 35.1. GoogleTest
- 35.2. 模擬 (Mocking)
- 36. 記錄
- 37. 互通性
❱
- 37.1. 與 C 的互通性
❱
- 37.1.1. 使用 Bindgen 呼叫 C
- 37.1.2. 從 C 呼叫 Rust
- 37.2. 與 C++ 的互通性
❱
- 37.2.1. 測試模組
- 37.2.2. Rust 橋接器
- 37.2.3. 產生的 C++
- 37.2.4. C++ 橋接器
- 37.2.5. 共用型別
- 37.2.6. 共用列舉
- 37.2.7. 錯誤處理
- 37.2.8. 錯誤處理
- 37.2.9. 其他型別
- 37.2.10. 針對 Android 建構:C++
- 37.2.11. 針對 Android 建構:Genrules
- 37.2.12. 針對 Android 建構:Rust
- 37.3. 與 Java 的互通性
- 38. 練習
- Chromium
- 39. 歡迎
- 40. 設定
- 41. 比較 Chromium 和 Cargo 的生態系統
- 42. 政策
- 43. 建構規則
❱
- 43.1. 不安全的 Rust
- 43.2. 在 Chromium C++ 中使用 Rust 程式碼
- 43.3. Visual Studio Code
- 43.4. 練習
- 44. 測試
❱
- 44.1. rust_gtest_interop 程式庫
- 44.2. Rust 測試適用的 GN 規則
- 44.3. chromium::import! 巨集
- 44.4. 練習
- 45. 互通性
❱
- 45.1. 範例
- 45.2. CXX 的限制
- 45.3. 錯誤處理
❱
- 45.3.1. 錯誤處理
- 45.3.2. 錯誤處理
- 45.4. 在 Chromium 中使用 CXX
- 45.5. 練習
- 46. 新增第三方 Crate
❱
- 46.1. 設定 Cargo.toml
- 46.2. 設定 gnrt_config.toml
- 46.3. 下載 Crate
- 46.4. 產生 gn 建構規則
- 46.5. 解決問題
❱
- 46.5.1. 建構用於產生程式碼的指令碼
- 46.5.2. 建構用於建立 C++ 或執行任意動作的指令碼
- 46.6. 使用 Crate
- 46.7. 程式庫審查和稽核
- 46.8. 提交為 Chromium 原始碼
- 46.9. 保持 Crate 為最新版本
- 46.10. 練習
- 47. 融會貫通 - 練習題
- 48. 練習題的參考答案
- 裸機開發:上午
- 49. 歡迎
- 50. no_std
❱
- 50.1. 最小限度的範例
- 50.2. alloc
- 51. 微控制器
❱
- 51.1. 原始 MMIO
- 51.2. PAC
- 51.3. HAL Crates
- 51.4. 開發板支援 Crate
- 51.5. 型別狀態模式
- 51.6. embedded-hal
- 51.7. probe-rs、cargo-embed
❱
- 51.7.1. 偵錯
- 51.8. 其他專案
- 52. 練習
❱
- 52.1. 指南針
- 52.2. 解決方案
- 裸機開發:下午
- 53. 應用程式處理器
❱
- 53.1. 準備使用 Rust
- 53.2. 行內組語
- 53.3. MMIO
- 53.4. 編寫 UART 驅動程式
❱
- 53.4.1. 其他特徵
- 53.5. 經改良的 UART 驅動程式
❱
- 53.5.1. Bitflags
- 53.5.2. 多個暫存器
- 53.5.3. 驅動程式
- 53.5.4. 開始使用
- 53.6. 記錄
❱
- 53.6.1. 開始使用
- 53.7. 例外狀況
- 53.8. 其他專案
- 54. 實用的 Crate
❱
- 54.1. zerocopy
- 54.2. aarch64-paging
- 54.3. buddy_system_allocator
- 54.4. tinyvec
- 54.5. spin
- 55. Android
❱
- 55.1. vmbase
- 56. 練習
❱
- 56.1. RTC 驅動程式
- 56.2. 解決方案
- 並行:上午
- 57. 歡迎
- 58. 執行緒
❱
- 58.1. 限定範圍執行緒
- 59. 通道
❱
- 59.1. 無界限的通道
- 59.2. 有界限的通道
- 60. Send 和 Sync
❱
- 60.1. Send
- 60.2. Sync
- 60.3. 範例
- 61. 共享狀態
❱
- 61.1. Arc
- 61.2. Mutex
- 61.3. 範例
- 62. 練習
❱
- 62.1. 哲學家就餐問題
- 62.2. 多執行緒連結檢查器
- 62.3. 解決方案
- 並行:下午
- 63. Async 基本概念
❱
- 63.1. async/await
- 63.2. Futures
- 63.3. Runtimes
❱
- 63.3.1. Tokio
- 63.4. 工作
- 63.5. 非同步管道
- 64. 控制流程
❱
- 64.1. 加入
- 64.2. 選取
- 65. 陷阱
❱
- 65.1. 阻占執行器
- 65.2. Pin
- 65.3. 非同步特徵
- 65.4. 安裝
- 66. 練習
❱
- 66.1. 哲學家就餐問題
- 66.2. 廣播聊天應用程式
- 66.3. 解決方案
- 結語
- 67. 謝謝!
- 68. 詞彙解釋
- 69. 其他資源
- 70. 出處清單