在Rust中,我相信處理可恢復錯誤的慣用方法是使用Result。例如該函數顯然是慣用:如果成功,返回函數中的錯誤而沒有結果的慣用方法是什麼?
fn do_work() -> Result<u64, WorkError> {...}
當然,也有具有單一的,明顯的,故障狀態,並因此使用的選項類型,而不是功能。一個慣用的例子是:
fn do_work() -> Option<u64>
這一切都直接在文檔中解決。然而,我對功能失敗的情況感到困惑,但成功時卻沒有意義。比較以下兩個函數:
fn do_work() -> Option<WorkError>
// vs
fn do_work() -> Result<(), WorkError>
我只是不確定這些中哪一個更具慣用性,或者在現實世界中更常使用Rust代碼。我對這類問題的前往資源是Rust書,但我認爲這不在其「Error Handling」部分中提及。我還沒有與其他Rust文檔運氣很好。
當然這看起來很主觀,但我正在尋找權威的來源,要麼說明哪種形式是慣用的,要麼說明爲什麼一種形式比另一種形式更好(或更差)。 (我也很好奇,這種慣例是如何與其他語言相比,像Go和Haskell那樣大量使用「錯誤作爲數值」)。
我是'結果<(), Error>'方面的事情..我通常將這些作爲我自己的類型。我很想聽聽其他人說什麼。我這樣做,但是因爲'try!'宏仍然可以很好地播放它。 –