Skip to content
Update rust error authored by umaumax's avatar umaumax
...@@ -135,6 +135,25 @@ pub enum Error { ...@@ -135,6 +135,25 @@ pub enum Error {
* 既存のエラー型を受け入れられる`thiserror`のエラー型を`Anyhow(#[from] anyhow::Error)`のようにして作成する * 既存のエラー型を受け入れられる`thiserror`のエラー型を`Anyhow(#[from] anyhow::Error)`のようにして作成する
* `anyhow::bail!``anyhow::ensure!``thiserror`のエラー型で返せるように自前定義のマクロに置き換える * `anyhow::bail!``anyhow::ensure!``thiserror`のエラー型で返せるように自前定義のマクロに置き換える
### thiserrorのエラーメッセージ
[Issue with a `String` and `thiserror`: `as_dyn_error` exists for reference `&String`, but its trait bounds were not satisfied` in Rust - Stack Overflow]( https://stackoverflow.com/questions/71092535/issue-with-a-string-and-thiserror-as-dyn-error-exists-for-reference-str )
``` rust
// old version
#[derive(Error, Debug)]
pub enum Error {
#[error("{0}")]
Other(#[from] String)
}
// new version
#[derive(Error, Debug)]
pub enum Error {
#[error("{0}")]
Other(String)
}
```
## anyhow ## anyhow
### anyhow::Result<>は普通の構造体をエラーとして持つ場合は`?`を利用できる ### anyhow::Result<>は普通の構造体をエラーとして持つ場合は`?`を利用できる
ResultのEがErrorトレイトを満たす単なる構造体については`?`を利用するだけで良い ResultのEがErrorトレイトを満たす単なる構造体については`?`を利用するだけで良い
... ...
......