[[パターンマッチ (Rust)|パターンマッチ]]でステータスによって処理を分岐する。
```rust
use anyhow::{bail, Result};
let r = reqwest::Client::new()
.get(format!("{}{}", BASE_URL, path))
.query(query)
.send()
.await?;
match r.status() {
s if s.is_client_error() => bail!(
"Client error, status: {}, message: {}",
r.status(),
r.text().await.unwrap_or_else(|_| "unexpected error".to_string())
),
s if s.is_server_error() => bail!(
"Server error, status: {}, message: {}",
r.status(),
r.text().await.unwrap_or_else(|_| "unexpected error".to_string())
),
_ => {
Ok(r.json::<R>().await?)
}
}
```
## 参考
https://docs.rs/reqwest/0.6.2/reqwest/enum.StatusCode.html#method.is_client_error