ys memos

Blog

RustのResultで、あらゆるエラーを伝搬させる


rust

2025/05/07


Rustを使っていて、Errorの伝搬を簡素に行いたい場合があると思う。

そのようなシチュエーションでは、anyhowクレートを使うことが多いが、シンプルな利用などで、依存を増やさずに単に ?だけを使いたい場合もある。

そのような場合にどんなエラーでも受け取れるResultを指定する方法を紹介しておく。ただし、本格的に使う場合は anyhowthiserrorを使うことをお勧めする。


このように書くと、あらゆるエラーをOk(), Err()で返せるようになる。ただし、サイズが可変になってしまうので、Box<dyn std::error::Error>を使うことになる。

fn main() -> Result<(), Box<dyn std::error::Error>> {
  // 何らかの処理
}

普段は使わないが、パッとスニペットを書くときや、小さいCLIツールとして書くときなどはこのようなエラーハンドリングにしてもいいかもしれない。


関連タグを探す