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

Rust By Example

デストラクト

matchは値をさまざまなやり方でデストラクトすることができます。

  • タプルのデストラクト
  • 配列とスライスのデストラクト
  • 列挙型のデストラクト
  • ポインタのデストラクト
  • 構造体のデストラクト