Closed2
Rust for rustaceansの勉強メモ:エラー処理
Rustにおけるエラー処理のベストプラクティスはまだ議論が活発なトピックで、答えが定まっていない
Enumeration
pub enum CopyError {
In(std::io::Error),
Out(std::io::Error),
}
やるべきこと
-
std::io::Error
トレイトを実装する。 -
Display
とDebug
を実装する。-
Display
何を誤ったかの一行の描写 小文字 句読点なし
-
-
Debug
より説明的なエラー - (可能なら)
Send
とSync
を実装する。 - (可能なら)
'static
にする。
Erasure
type erased error
Box<dyn Error + Send + Sync + 'static>
Error propagation
-
?
演算子はFrom
を使っている -
?
演算子は暫定的にTry
と呼ばれているトレイトと単なるシンタックスシュガーである。
Tryトレイト
まだ安定化していない。
アウトライン
後の計算が便利である(happy path)またはそうではないのラッパータイプ
Monad
Result<T, E>
Option<T>
Poll<Result<T,E>>
?
演算子を幅広い型に対して扱えるようになるかも
このスクラップは2021/10/25にクローズされました