いずれかを問わず、パーサーを構築できます。これを実際する方法は2つあります。対するジェネリックとして書くことです。実装することで実現しました。そのように変更することも可能です。そのように変更することも可能です。実装を用意しなければなりません。変換する必要があります。実装が重要になります。found」エラーです。}}これ以外の変更は不要です。機能を追加する汎用的なコードを書くのは素晴らしいことです。物事を汎用的にするのはクールですし、後になって役立つかもしれません。時には、その苦労の甲斐がないこともあります。最後のステップで何をしたか振り返ってみましょう:新しいエラー型を定義した。ここでの大きな問題は、このプログラムは全体で見ると大して良くならなかったことです。エラーを表現するには、多くの付随する作業が必要です。このような短いプログラムでは、それが顕著に現れました。関数がエラーによってどう対処するのかを選択できるようになったことです。メッセージを表示する以外、選択の余地はほとんどありませんでした。フラグは詳細な出力を抑止すべきです。いま現在は、プログラムがマッチするものを見つけられなかったとき、それを告げるメッセージを表示します。これは、特にプログラムをシェルスクリプトから使いたいときなどは、扱いにくいかもしれません。フラグを追加してみましょう。以前したように、使用法についての文字列を少し修正して、オプション変数にフラグを追加します。warnings.");...後は「quiet」機能を実装するだけです。warnings.:エラーや警告を抑止します。IOエラーが起こったり、データのパースに失敗したときは、エラーを抑止したくはありません。指定されたかを検査しています。動作にならい)なにも表示せず、exitコードと共に終了します。機能を実装するのは、かなり面倒だったでしょう。これが、このケーススタディの締めくくりとなります。これからは外の世界に飛び出して、あなた自身のプログラムやライブラリを、適切なエラーハンドリングと共に書くことができるでしょう。まとめこのセクションは長いので、Rustにおけるエラー処理について簡単にまとめたほうがいいでしょう。いずれかが使えます)。あなたのコードを参考にする人は、正しいエラーハンドリングについて知っているべきです。使うことに罪悪感を持たなくてもいいでしょう。警告があります:もしそれが最終的に他の人たちの手に渡るなら、彼らが貧弱なエラーメッセージに動揺してもおかしくありません。マクロをエルゴノミックにしましょう。トレイトを実装してください。実装することで、ライブラリ自身と呼び出し元のコードを書きやすくしてください。実装することはできません。ライブラリでするべきです。定義されているコンビネータについて学んでください。コンビネータを適度にミックスすることは、個人的には、とても魅力的な方法だと考えています。