第121章へようこそ。
第120章で、ゼロコスト抽象を語りました。
抽象化のコストがコンパイル時に消え、実行時に残らない。
そして、コストが発生する場面ではそれがコードに明示される。
今日のテーマは「明示性」です。
Rustを書いていると、他の言語では自動的に行われることを、自分の手で書かなければならない場面に出会います。
コピーが自動で起きない。cloneと書かなければならない。
型の変換が暗黙に起きない。変換関数を呼ばなければならない。
エラーが例外として飛ばない。Resultを受け取って処理しなければならない。
最初は不便に感じる。
なぜ言語が自動でやってくれないのか。
しかし、この不便さには明確な設計意図があります。
Rustは、プログラムの中で何が起きているかを、コードに書かせる。
暗黙のうちに何かが起きることを、構造的に拒否する。