- はじめに
- 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. プレイグラウンド