Rust ツアー 目次

失敗しうる main の再考

Rust のコードにはエラーを表現する方法が数多くありますが、標準ライブラリにはエラーを記述するための普遍的なトレイト std::error::Error があります。

スマートポインタ Box を使うことで、Box<dyn std::error::Error> という型を、エラーを返すための共通の型として使用できます。これにより、特定の型を知らなくても、高いレベルでヒープ上のエラーを伝播させてそれとやり取りすることができます。

Tour of Rust の序盤で、main はエラーを返せることを学びました。エラーのデータ構造が Rust の共通トレイト Error を実装している限り、発生しうるほとんどあらゆる種類のエラーを記述できる型を、今では返せるようになりました。

fn main() -> Result<(), Box<dyn std::error::Error>>