## 事象
以下のようなコードについて
```rust
let Data(x) = first_record else {
return bail!("first_recordがデータではなく想定外です")
};
```
`returnbail!...`の行に以下のwarningが出る。
```
unreachable expression Note: `#[warn(unreachable_code)]` on by default
```
## 原因
[[bailマクロ]]は`return`を含むため、実際には以下のようになってしまい...
```rust
let Data(x) = first_record else {
return return Err(From::from("first_recordがデータではなく想定外です"))
};
```
1つ目の`return`文が実行されることはない (2つ目の`return`で処理が終わってしまう) ため到達不可能だから。
## 解決方法
`return`を外す。
```rust
let Data(x) = first_record else {
bail!("first_recordがデータではなく想定外です")
};
```