この本について
「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の素晴らしさを一つずつ見ていこう.