型システムを活用する
Rust の型システムは 表現力が高く、型とトレイトを使って コードを誤用しにくくする抽象化を構築できます。
場合によっては、実行時オーバーヘッドなしに、コンパイル時 に 正しさを保証するところまで踏み込めます。
型とトレイトは、ビジネスドメインの概念や制約をモデル化できます。 注意深く設計すれば、コードベース全体の明瞭さと保守性を 向上させられます。
話者が追加で言及してもよい項目:
-
Rust の型システムは、関数型プログラミング言語から多くのアイデアを 取り入れています。
たとえば、Rust の enum は、Haskell や OCaml のような言語では 「代数的データ型」として知られています。型を使った設計の指針を 探す際には、関数型言語向けの学習資料を参考にできます。 “Domain Modeling Made Functional” はこのテーマに関する優れた 資料で、例は F# で書かれています。
-
Rust には関数型のルーツがありますが、すべての関数型設計パターンを そのまま Rust に簡単に持ち込めるわけではありません。
たとえば、Rust で高階関数や高カインド型を活用する API を設計するには、 幅広い高度なトピックについて確かな理解が必要です。
ケースごとに、より命令的なアプローチのほうが実装しやすいかどうかを 評価してください。Rust の借用チェッカーと型システムを活用して、 何をどこで変更できるかを制御しつつ、インプレースな変更を使うことも 検討してください。
-
同じ注意は、オブジェクト指向の設計パターンにも当てはまります。Rust は継承をサポートしておらず、オブジェクトの分解は借用チェッカーが 導入する制約を考慮に入れる必要があります。
-
型レベルプログラミングはしばしば「ゼロコスト抽象化」を実現するために 使えるものの、この表現は誤解を招くおそれがあることにも触れてください。 コンパイル時間やコードの複雑さへの影響は大きい場合があります。
segment outline