2025/05/07
はじめに
Rustを使っていて、Errorの伝搬を簡素に行いたい場合があると思う。
そのようなシチュエーションでは、anyhowクレートを使うことが多いが、シンプルな利用などで、依存を増やさずに単に ?
だけを使いたい場合もある。
そのような場合にどんなエラーでも受け取れるResultを指定する方法を紹介しておく。ただし、本格的に使う場合は anyhow
や thiserror
を使うことをお勧めする。
記法
このように書くと、あらゆるエラーをOk(), Err()で返せるようになる。ただし、サイズが可変になってしまうので、Box<dyn std::error::Error>
を使うことになる。
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 何らかの処理
}
おわりに
普段は使わないが、パッとスニペットを書くときや、小さいCLIツールとして書くときなどはこのようなエラーハンドリングにしてもいいかもしれない。