Welcome to Comprehensive Rust 🦀
1.
講座の運営について
❱
1.1.
Course Structure
1.2.
Keyboard Shortcuts
1.3.
翻訳
2.
Using Cargo
❱
2.1.
Rust Ecosystem
2.2.
Code Samples
2.3.
ローカル環境での実行
Day 1: AM
3.
Welcome
4.
Hello, World
❱
4.1.
Rustとは?
4.2.
Hello, World
4.3.
Benefits of Rust
4.4.
Playground
5.
Types and Values
❱
5.1.
変数
5.2.
Values
5.3.
Arithmetic
5.4.
Strings
5.5.
型推論
5.6.
Exercise: Fibonacci
❱
5.6.1.
解答
6.
制御フロー
❱
6.1.
Conditionals
6.2.
Loops
6.3.
break と continue
6.4.
Blocks and Scopes
6.5.
関数
6.6.
Macros
6.7.
Exercise: Collatz Sequence
❱
6.7.1.
解答
Day 1: PM
7.
Welcome
8.
Tuples and Arrays
❱
8.1.
Tuples and Arrays
8.2.
Cargoとのインテグレーション
8.3.
パターンマッチング
8.4.
列挙型編
8.5.
Exercise: Nested Arrays
❱
8.5.1.
解答
9.
References
❱
9.1.
Shared References
9.2.
Exclusive References
9.3.
Exercise: Geometry
❱
9.3.1.
解答
10.
User-Defined Types
❱
10.1.
構造体(structs)
10.2.
タプル構造体
10.3.
列挙型(enums)
10.4.
static & const
10.5.
Type Aliases
10.6.
Exercise: Elevator Events
❱
10.6.1.
解答
Day 2: AM
11.
Welcome
12.
パターンマッチング
❱
12.1.
列挙型編
12.2.
制御フロー
12.3.
Exercise: Expression Evaluation
❱
12.3.1.
解答
13.
ReadとWrite
❱
13.1.
メソッド
13.2.
トレイト(trait)
13.3.
トレイトの導出
13.4.
トレイトオブジェクト
13.5.
練習問題
❱
13.5.1.
解答
14.
ジェネリクス(generics)
❱
14.1.
Extern関数
14.2.
ジェネリックデータ型
14.3.
トレイト制約
14.4.
impl Trait
14.5.
Exercise: Generic min
❱
14.5.1.
解答
Day 2: PM
15.
Welcome
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.
Iterator
17.3.
From and Into
17.4.
テスト
17.5.
Read and Write
17.6.
Default, struct update syntax
17.7.
Closures
17.8.
練習問題
❱
17.8.1.
解答
Day 3: AM
18.
Welcome
19.
メモリ管理
❱
19.1.
Review of Program Memory
19.2.
Rustのメモリ管理
19.3.
所有権
19.4.
ムーブセマンティクス
19.5.
Clone
19.6.
Copy Types
19.7.
Drop
19.8.
Exercise: Builder Type
❱
19.8.1.
解答
20.
Smart Pointers
❱
20.1.
Box<T>
20.2.
Rc
20.3.
Exercise: Binary Tree
❱
20.3.1.
解答
Day 3: PM
21.
Welcome
22.
借用
❱
22.1.
借用
22.2.
借用
22.3.
相互運用性
22.4.
健康統計
❱
22.4.1.
解答
23.
ライフタイム
❱
23.1.
Slices: &\[T\]
23.2.
型推論
23.3.
関数とライフタイム
23.4.
ライフタイム
23.5.
ライフタイム
23.6.
Exercise: Protobuf Parsing
❱
23.6.1.
解答
Day 1: AM
24.
Welcome
25.
Iterators
❱
25.1.
Iterator
25.2.
IntoIterator
25.3.
FromIterator
25.4.
Exercise: Iterator Method Chaining
❱
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.
便利クレート
27.4.
GoogleTest
27.5.
Mocking
27.6.
Compiler Lints and Clippy
27.7.
Luhnアルゴリズム
❱
27.7.1.
解答
Day 1: PM
28.
Welcome
29.
エラー処理
❱
29.1.
パニック(panic)
29.2.
Iterator
29.3.
暗黙的な型変換
29.4.
他のトレイト
29.5.
thiserror and anyhow
29.6.
Exercise: Rewriting with Result
❱
29.6.1.
解答
30.
Unsafe Rust
❱
30.1.
Unsafe Rust
30.2.
生ポインタの参照外し
30.3.
可変なstatic変数
30.4.
共用体
30.5.
Unsafe関数の呼び出し
30.6.
Unsafeなトレイトの実装
30.7.
安全なFFIラッパ
❱
30.7.1.
解答
Android
31.
Welcome
32.
セットアップ
33.
ビルドのルール
❱
33.1.
バイナリ
33.2.
ライブラリ
34.
AIDL(Androidインターフェイス定義言語)
❱
34.1.
インターフェイス
34.2.
実装
34.3.
サーバ
34.4.
デプロイ
34.5.
クライアント
34.6.
APIの変更
35.
ログ出力
36.
相互運用性
❱
36.1.
C
❱
36.1.1.
BindgenによるCの呼び出し
36.1.2.
CからRust呼び出し
36.2.
C++
❱
36.2.1.
テストモジュール
36.2.2.
Android
36.2.3.
Generated C++
36.2.4.
C++ Bridge
36.2.5.
状態共有
36.2.6.
Shared Enums
36.2.7.
エラー処理
36.2.8.
エラー処理
36.2.9.
Additional Types
36.2.10.
Building for Android: C++
36.2.11.
Building for Android: Genrules
36.2.12.
Building for Android: Rust
36.3.
Java
37.
練習問題
Chromium
38.
Welcome
39.
セットアップ
40.
Comparing Chromium and Cargo Ecosystems
41.
Policy
42.
ビルドのルール
❱
42.1.
Unsafe Rust
42.2.
Depending on Rust Code from Chromium C++
42.3.
Visual Studio Code
42.4.
練習問題
43.
テスト
❱
43.1.
rust_gtest_interop Library
43.2.
GN Rules for Rust Tests
43.3.
chromium::import! Macro
43.4.
練習問題
44.
相互運用性
❱
44.1.
例
44.2.
Limitations of CXX
44.3.
エラー処理
❱
44.3.1.
エラー処理
44.3.2.
エラー処理
44.4.
Using CXX in Chromium
44.5.
練習問題
45.
Adding Third Party Crates
❱
45.1.
Configuring Cargo.toml
45.2.
Configuring gnrt_config.toml
45.3.
Downloading Crates
45.4.
Generating gn Build Rules
45.5.
Resolving Problems
❱
45.5.1.
Build Scripts Which Generate Code
45.5.2.
Build Scripts Which Build C++ or Take Arbitrary Actions
45.6.
Depending on a Crate
45.7.
Reviews and Audits
45.8.
Checking into Chromium Source Code
45.9.
Keeping Crates Up to Date
45.10.
練習問題
46.
Bringing It Together - Exercise
47.
解答
ベアメタル: AM
48.
Welcome
49.
no_std
❱
49.1.
例
49.2.
alloc
50.
マイクロコントローラ
❱
50.1.
生MMIO(メモリマップドI/O)
50.2.
PACs
50.3.
HALクレート
50.4.
ボードサポートクレート
50.5.
タイプステートパターン
50.6.
embedded-hal
50.7.
probe-rs, cargo-embed
❱
50.7.1.
デバッグ
50.8.
他のプロジェクト
51.
練習問題
❱
51.1.
コンパス
51.2.
解答
ベアメタル: PM
52.
アプリケーションプロセッサ
❱
52.1.
Getting Ready to Rust
52.2.
インラインアセンブリ
52.3.
MMIO
52.4.
UARTドライバを書いてみよう
❱
52.4.1.
他のトレイト
52.5.
UARTドライバの改善
❱
52.5.1.
ビットフラッグ
52.5.2.
複数のレジスタ
52.5.3.
ドライバ
52.5.4.
使用例
52.6.
ログ出力
❱
52.6.1.
使用例
52.7.
例外
52.8.
他のプロジェクト
53.
便利クレート
❱
53.1.
zerocopy
53.2.
aarch64-paging
53.3.
buddy_system_allocator
53.4.
tinyvec
53.5.
spin
54.
Android
❱
54.1.
vmbase
55.
練習問題
❱
55.1.
RTC(リアルタイムクロック)ドライバ
55.2.
解答
並行性: AM
56.
Welcome
57.
スレッド
❱
57.1.
スコープ付きスレッド
58.
チャネル
❱
58.1.
Unboundedチャネル
58.2.
Boundedチャネル
59.
SendとSync
❱
59.1.
Send
59.2.
Sync
59.3.
例
60.
状態共有
❱
60.1.
Arc
60.2.
Mutex
60.3.
例
61.
練習問題
❱
61.1.
食事する哲学者
61.2.
マルチスレッド・リンクチェッカー
61.3.
解答
並行性: PM
62.
Asyncの基礎
❱
62.1.
async/await
62.2.
Future
62.3.
ランタイム
❱
62.3.1.
Tokio
62.4.
タスク
62.5.
Asyncチャネル
63.
制御フロー
❱
63.1.
Join
63.2.
Select
64.
落とし穴
❱
64.1.
エグゼキュータのブロッキング
64.2.
Pin
64.3.
Asyncトレイト
64.4.
インストール
65.
練習問題
❱
65.1.
食事する哲学者
65.2.
ブロードキャスト・チャットアプリ
65.3.
解答
最後に
66.
ありがとうございました!
67.
Glossary
68.
参考資料
69.
クレジット
Light
Rust
Coal
Navy
Ayu
Comprehensive Rust 🦀
English
Brazilian Portuguese (Português do Brasil)
Chinese Simplified (汉语)
Chinese Traditional (漢語)
Korean (한국어)
Spanish (Español)
Keyboard Shortcuts
mdBookには、便利なショートカットキーがいくつか存在します:
Arrow-Left
: 前のページに移動
Arrow-Right
: 次のページに移動。
Ctrl + Enter
: フォーカスを持つコードサンプルを実行
s
: 検索バーを起動