歡迎參加 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.
出處清單
Light
Rust
Coal
Navy
Ayu
Comprehensive Rust 🦀
English
Brazilian Portuguese (Português do Brasil)
Chinese Simplified (汉语)
Chinese Traditional (漢語)
Japanese (日本語)
Korean (한국어)
Farsi (فارسی)
Spanish (Español)
Ukrainian (українська)
參照
This segment should take about 35 minutes. It contains:
Slide
Duration
共用列舉
10 minutes
迷途參照
10 minutes
練習:幾何圖形
15 minutes