Rustでは、回復可能なエラーを処理するための慣用的な方法はResultを使用することです。たとえば、この機能は明らかに慣用的である:成功した場合、結果のない関数からエラーを返す慣習的な方法は何ですか?
もちろんfn do_work() -> Result<u64, WorkError> {...}
、またシングル、明らかに、障害状態を持っているので、代わりにオプションのタイプを使用する関数があります。慣用句の例は次のとおりです。
fn do_work() -> Option<u64>
これはすべてドキュメントで簡単に説明しています。しかし、私は、関数が失敗する可能性があるのは混乱していますが、成功すると意味のある値はありません。次の2つの関数の比較:
fn do_work() -> Option<WorkError>
// vs
fn do_work() -> Result<(), WorkError>
私はこれらのいずれかが、より慣用的である、または現実世界の錆コードでより頻繁に使用されるかわかりません。このような質問のための私のgo-toリソースはRustの本ですが、私はこれが "Error Handling"セクションで扱われているとは思いません。私は、他のRustのドキュメンテーションでも多くの運がなかった。
もちろん、これはかなり主観的ですが、私は、どちらの形式が慣用的であるか、または一方の形式が他の形式よりも優れている(または劣っている)のどちらかを述べる信頼できる情報源を探しています。 (また、GoとHaskellのように、 "値としてのエラー"を頻繁に利用する他の言語とどのように慣習が比較されているのか不思議です)。
私は物事の「結果<(), Error>」の側です。私は通常、これらを自分のタイプとしてエイリアスします。私は他の人の話を聞くことに興味があります。私はこれをやっています。なぜなら、 'try!'マクロはやはりうまくいきます。 –