TL;DR

  • Google で Rust の実装に携わってきた著者が、Rust らしいプログラミングの方法を 35 項目にまとめた本である。
  • 所有、借用、生存期間、トレイトといった Rust 特有の概念を具体例で説明し、Cargo による依存ライブラリの管理や Clippy などのエコシステムの使い方も扱う。

対象読者

Rust の入門書を読み終えた読者向けの本である。

https://www.oreilly.co.jp/books/9784814400942/

原書は Web でも公開されている: https://www.lurklurk.org/effective-rust/title-page.html

目次

型

  1. データ構造を表現するために型システムを用いよう
  2. 型システムを用いて共通の挙動を表現しよう
  3. OptionとResultに対してはmatchを用いずに変換しよう
  4. 標準のError型を使おう
  5. 型変換を理解しよう
  6. newtypeパターンを活用しよう
  7. 複雑な型にはビルダを使おう
  8. 参照型とポインタ型に慣れよう
  9. 明示的なループの代わりにイテレータ変換を使用することを検討しよう

トレイト

  1. 標準トレイトに習熟しよう
  2. RAIIパターンにはDropトレイトを実装しよう
  3. ジェネリクスとトレイトオブジェクトのトレードオフを理解しよう
  4. デフォルト実装を用いて、実装しなければならないトレイトメソッドを最小限にしよう

さまざまなコンセプト

  1. 生存期間を理解しよう
  2. 借用チェッカを理解しよう
  3. unsafeコードを書かないようにしよう
  4. 状態共有並列実行には気を付けよう
  5. Don't panic
  6. リフレクションを避けよう
  7. 過剰な最適化の誘惑を退けよう

依存ライブラリ

  1. セマンティックバージョン(SemVer)を理解しよう
  2. 可視範囲を最小化しよう
  3. ワイルドカードインポートを避けよう
  4. APIに型が登場する依存ライブラリは再エクスポートしよう
  5. 依存グラフを管理しよう
  6. 忍び寄るフィーチャに注意しよう

ツール

  1. パブリックインターフェイスのドキュメントを書こう
  2. 分別をもってマクロを使おう
  3. Clippyに耳を傾けよう
  4. ユニットテスト以上のものを書こう
  5. ツールのエコシステムを活用しよう
  6. CIシステムを設定しよう

標準Rustの向こうへ

  1. ライブラリコードをno_std互換にすることを検討しよう
  2. FFI境界を通過するものを制御しよう
  3. 手動でFFIマッピングを書かずにbindgenを用いよう

関連