第9章へようこそ。
今日のテーマは「エラー型の設計」です。
第3章でResult型を学びました。
関数が失敗しうるとき、戻り値をResult型にする。Okに成功時のあたいが入り、Errにエラー情報が入る。
?演算子で、エラーを呼び出し元に伝播できる。
しかし、第3章では触れなかったことがあります。
Errの中に入れるエラー型を、どう設計するのか。
ファイルの読み込みは入出力エラーを返す。文字列のパースはパースエラーを返す。
1つの関数の中で、異なる種類のエラーが発生しうるとき、戻り値のエラー型は何にするのか。
エラーを受け取った側は、どうやって失敗の種類を区別するのか。
第8章でトレイトを学んだことで、この問題に正面から向き合えます。
Rustのエラー処理は、トレイトの仕組みの上に構築されている。