はじめに
この本について
「Wonderfull Rust」は「Bitterless Rust」の続編にあたる.
Bitterless Rust では,Rust の「苦い」部分を意図的に省略し,語弊だらけの説明で「とりあえず動くコードが書ける」ことを目標にした.所有権,ライフタイム,トレイト,マクロ,unsafe — これらはすべて「後で学べばいい」として切り捨てた.
この本では,その「後で」に正面から向き合う.
ただし,The Book のように体系的にすべてを網羅するわけではない.この本の目的は Rust の何が素晴らしいのかを,概念的に正確に理解する ことにある.Rust がなぜこのように設計されているのか,その設計思想のどこが優れているのかを,一つひとつ掘り下げていく.
この本で扱うこと
- 式ベースのプログラミング — ML 系言語に由来する式指向の設計と Unit 型
- 型システム — Hindley-Milner 型推論,ジェネリクス,GATs
- Unit と trait impl による抽象化 — Unit 型の深掘り,ビルトイン機能の一般化と,ユーザー定義型への拡張
- 借用チェッカー — 所有権,ライフタイム,並行性の安全保証
- モジュールシステム — 可視性制御と use 構文の合理性
- マクロ — 宣言的マクロと手続き的マクロによるメタプログラミング
- パフォーマンス — ゼロコスト抽象化と LLVM バックエンドがもたらす実行性能
- メモリレベルのプログラミング — unsafe,ベアメタル,ローレベルの世界
- ツールのオールインワン — Cargo を中心としたエコシステムの統一性
- クロスビルド — WebAssembly や napi-rs を含むクロスコンパイルの世界
- ドキュメンテーション — rustdoc とドキュメントテストの統合
前提知識
Bitterless Rust を読了しているか,それと同等の Rust の基礎知識を持っていることを前提とする.具体的には,以下を理解している必要がある:
let,fn,struct,enum,implの基本的な使い方matchによるパターンマッチングVec,String,Option,Resultの基本的な使い方cargo run,cargo buildの基本操作
また,この本は「Rust の設計思想の何が優れているか」を解説するものなので,他のプログラミング言語(C, C++, Java, TypeScript, Python など)の経験がある方がより深く理解できる.
表記について
この本では Bitterless Rust と異なり,語弊のない正確な説明を心がける.概念の正確性を重視するため,必要に応じて理論的な背景にも触れる.ただし,学術的な厳密さよりも「概念的な正確さ」を優先する場面もある.
それでは,Rust の素晴らしさを一つずつ見ていこう.