## 事象 以下のようなコードについて ```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がデータではなく想定外です") }; ```