- はじめに
 - 1. Hello World
❱
 - 1.1. コメント
 - 1.2. フォーマットして出力
❱
 - 1.2.1. Debug
 - 1.2.2. Display
❱
 - 1.2.2.1. テストケース:リスト
 
- 1.2.3. フォーマット
 
- 2. 基本データ型
❱
 - 2.1. リテラルと演算子
 - 2.2. タプル
 - 2.3. 配列とスライス
 
- 3. カスタム型
❱
 - 3.1. 構造体
 - 3.2. 列挙型
❱
 - 3.2.1. use
 - 3.2.2. C言語ライクな列挙型
 - 3.2.3. テストケース:連結リスト
 
- 3.3. 定数
 
- 4. 変数束縛
❱
 - 4.1. ミュータビリティ
 - 4.2. スコープとシャドーイング
 - 4.3. 前方宣言
 - 4.4. 値の凍結
 
- 5. 型
❱
 - 5.1. 型キャスト
 - 5.2. リテラル
 - 5.3. 型推論
 - 5.4. エイリアス
 
- 6. 型変換
❱
 - 6.1. FromとInto
 - 6.2. TryFromとTryInto
 - 6.3. Stringとの型変換
 
- 7. 式
 - 8. 制御フロー
❱
 - 8.1. if/else
 - 8.2. loop
❱
 - 8.2.1. ネストとラベル
 - 8.2.2. loopが返す値
 
- 8.3. while
 - 8.4. for と range
 - 8.5. match
❱
 - 8.5.1. デストラクト
❱
 - 8.5.1.1. タプル
 - 8.5.1.2. 配列とスライス
 - 8.5.1.3. 列挙型
 - 8.5.1.4. ポインタとref
 - 8.5.1.5. 構造体
 
- 8.5.2. ガード
 - 8.5.3. 束縛
 
- 8.6. if let
 - 8.7. let-else
 - 8.8. while let
 
- 9. 関数
❱
 - 9.1. メソッド
 - 9.2. クロージャ
❱
 - 9.2.1. 要素の捕捉
 - 9.2.2. 捕捉時の型推論
 - 9.2.3. 匿名型
 - 9.2.4. 関数を受け取る関数
 - 9.2.5. クロージャを返す関数
 - 9.2.6. stdにおける使用例
❱
 - 9.2.6.1. Iterator::any
 - 9.2.6.2. イテレータによる検索
 
- 9.3. 高階関数
 - 9.4. 発散する関数
 
- 10. モジュール
❱
 - 10.1. 可視性
 - 10.2. 構造体の場合
 - 10.3. use宣言
 - 10.4. superとself
 - 10.5. ファイルの階層構造
 
- 11. クレート
❱
 - 11.1. ライブラリの作成
 - 11.2. ライブラリの利用
 
- 12. Cargo
❱
 - 12.1. 依存関係
 - 12.2. 規約
 - 12.3. テスト
 - 12.4. ビルドスクリプト
 
- 13. アトリビュート
❱
 - 13.1. dead_code
 - 13.2. クレート
 - 13.3. cfg
❱
 - 13.3.1. 条件の追加
 
- 14. ジェネリクス
❱
 - 14.1. 関数
 - 14.2. 実装
 - 14.3. トレイト
 - 14.4. 境界
❱
 - 14.4.1. テストケース:空トレイト
 
- 14.5. 複数の境界
 - 14.6. Where句
 - 14.7. ニュータイプイディオム
 - 14.8. 関連要素
❱
 - 14.8.1. 関連要素が必要になる状況
 - 14.8.2. 関連型
 
- 14.9. 幽霊型パラメータ
❱
 - 14.9.1. テストケース:単位を扱う
 
- 15. スコープの規則
❱
 - 15.1. RAII
 - 15.2. 所有権とムーブ
❱
 - 15.2.1. ミュータビリティ
 - 15.2.2. 部分的ムーブ
 
- 15.3. 借用
❱
 - 15.3.1. ミュータビリティ
 - 15.3.2. エイリアス
 - 15.3.3. refパターン
 
- 15.4. ライフタイム
❱
 - 15.4.1. 明示的アノテーション
 - 15.4.2. 関数
 - 15.4.3. メソッド
 - 15.4.4. 構造体
 - 15.4.5. トレイト
 - 15.4.6. 境界
 - 15.4.7. 強制
 - 15.4.8. スタティックライフタイム
 - 15.4.9. 省略
 
- 16. トレイト
❱
 - 16.1. 導出(Derive)
 - 16.2. dynを利用してトレイトを返す
 - 16.3. 演算子のオーバーロード
 - 16.4. ドロップ
 - 16.5. イテレータ
 - 16.6. impl Trait
 - 16.7. クローン
 - 16.8. スーパートレイト
 - 16.9. トレイトの曖昧性解決
 
- 17. macro_rules!
❱
 - 17.1. 構文
❱
 - 17.1.1. 識別子
 - 17.1.2. オーバーロード
 - 17.1.3. 繰り返し
 
- 17.2. DRY (Don't Repeat Yourself)
 - 17.3. Domain Specific Languages (ドメイン特化言語、DSLs)
 - 17.4. 可変個引数
 
- 18. エラーハンドリング
❱
 - 18.1. panic
 - 18.2. abortとunwind
 - 18.3. Optionとunwrap
❱
 - 18.3.1. ?によるOptionのアンパック
 - 18.3.2. コンビネータ:map
 - 18.3.3. コンビネータ:and_then
 - 18.3.4. Defaults: or, or_else, get_or_insert, get_or_insert_with
 
- 18.4. Result
❱
 - 18.4.1. Resultのmap
 - 18.4.2. Resultに対するエイリアス
 - 18.4.3. 早期リターン
 - 18.4.4. ?の導入
 
- 18.5. 複数のエラー型
❱
 - 18.5.1. OptionからResultを取り出す
 - 18.5.2. エラー型を定義する
 - 18.5.3. エラーをBoxする
 - 18.5.4. ?の他の活用法
 - 18.5.5. エラーをラップする
 
- 18.6. Resultをイテレートする
 
- 19. 標準ライブラリの型
❱
 - 19.1. Box、スタックとヒープ
 - 19.2. ベクタ型
 - 19.3. 文字列
 - 19.4. Option
 - 19.5. Result
❱
 - 19.5.1. ?
 
- 19.6. panic!
 - 19.7. ハッシュマップ
❱
 - 19.7.1. キー型の変種
 - 19.7.2. ハッシュ集合
 
- 19.8. Rc
 - 19.9. Arc
 
- 20. 標準ライブラリのその他
❱
 - 20.1. スレッド
❱
 - 20.1.1. テストケース:map-reduce
 
- 20.2. チャネル
 - 20.3. ファイルパス
 - 20.4. ファイル I/O
❱
 - 20.4.1. open
 - 20.4.2. create
 - 20.4.3. read lines
 
- 20.5. 子プロセス
❱
 - 20.5.1. パイプ
 - 20.5.2. ドロップの延期
 
- 20.6. ファイルシステムとのやり取り
 - 20.7. 引数処理
❱
 - 20.7.1. 引数のパース
 
- 20.8. 他言語関数インターフェイス
 
- 21. テスト
❱
 - 21.1. ユニットテスト
 - 21.2. ドキュメンテーションテスト
 - 21.3. 統合テスト
 - 21.4. 開発中の依存関係
 
- 22. 安全でない操作
❱
 - 22.1. インラインアセンブリ
 
- 23. 互換性
❱
 - 23.1. 生識別子
 
- 24. 周辺情報
❱
 - 24.1. ドキュメンテーション
 - 24.2. プレイグラウンド