anyhow はエラー処理を簡単にかけるようになる Rust のクレート
Tips
エラーとその原因となった値を合わせて表示する
例えば変数 foo の内容を URL としてパースするとき、
Url::parse(foo)
.with_context(|| format!("invalid URL: {}", foo))ではなく
Url::parse(foo)
.with_context(|| foo.clone())
.context("invalid URL")のように、エラーメッセージとその原因となった値を2つのContextに分けて書いておくと良い
エラーログとして
invalid URL
Caused by:
(foo の内容)
のように表示される。このように、コードの記述も簡単になるし、エラーがある程度構造化されるので便利である。