関係書目エラーハンドリング他のほとんどのプログラミング言語と同様、Rustはプログラマに、ある決まった作法でエラーを扱うことを促します。一般的にエラーハンドリングは、例外、もしくは、戻り値を使ったものの、大きく2つに分類されます。Rustでは戻り値を使います。このセクションでは、Rustでのエラーハンドリングに関わる包括的な扱い方を提示しようと思います。それだけではなく、エラーハンドリングのやり方を、ひとつひとつ、順番に積み上げていきます。することで、全体がどう組み合わさっているのかの理解が進み、より実用的な知識が身につくでしょう。素朴なやり方を用いたなら、Rustにおけるエラーハンドリングは、冗長で面倒なものになり得ます。このセクションでは、エラーを処理する上でどのような課題があるかを吟味し、標準ライブラリを使うと、それがいかにシンプルでエルゴノミック(人間にとって扱いやすいもの)に変わるのかを紹介します。目次このセクションはとても長くなります。コンビネータから始めることで、Rustにおけるエラーハンドリングを徐々に改善していくための動機を与えるからです。このような構成ですので、もしすでに他の表現力豊かな型システムの経験があるプログラマでしたら、あちこち拾い読みしたくなるかもしれません。基づいて判断するものだと考えられます。保ったまま、明示的な場合分けの回数を、いかに減らしていくかということです。コードを合成可能に保つのは重要です。することを選ぶかもしれないからです。ほとんどの場合、プログラム全体をアボートします。1から10までの数字を予想します。予想した数字に一致したらtrueを返し、そうでなければfalseを返します。1から10までの数字を予想します。予想した数字に一致したらtrueを返し、そうでなければfalseを返します。英文のままにしてあります。このコードを実行すると、プログラムがクラッシュして、以下のようなメッセージが表示されます。src/bin/panic-simple.rs:5次は、もう少し自然な例です。このプログラムは引数として整数を受け取り、2倍した後に表示します。n);}もし、このプログラムに引数を与えなかったら(エラー1)、あるいは、最初の引数が整数でなかったら(エラー2)、このプログラムは、最初の例と同じようにパニックするでしょう。このようなスタイルのエラーハンドリングは、まるで、陶器店の中を駆け抜ける雄牛のようなものです。雄牛は自分の行きたいところへたどり着くでしょう。彼は、途中にある、あらゆるものを蹴散らしてしまいます。先ほどの例で、プログラムが2つのエラー条件のいずれかを満たしたときに、パニックすると言いました。呼び出してはいません。呼び出しの中に埋め込まれているのです。Rustでなにかを「アンラップする」とき、こう言っているのと同じです。「計算結果を取り出しなさい。エラーになっていたのなら、パニックを起こしてプログラムを終了させなさい。アンラップのコードはとてもシンプルなので、多分、それを見せたほうが早いでしょう。型について調べる必要があります。いう名前のメソッドが定義されています。不在の可能性を型システムにエンコードすることは、重要なコンセプトです。その不在に対処することを、コンパイラがプログラマに強制させるからです。文字列から文字を検索する例を見てみましょう。`needle`(縫い針)を検索します。見つかったら、文字のバイトオフセットを返します。`needle`(縫い針)を検索します。見つかったら、文字のバイトオフセットを返します。返すだけではないことに注目してください。