Tour of Rust Table of Contents

Failable Main Revisited

Rust code may have a plethora of representations of errors, but the standard library has a universal trait std::error::Error for describing errors.

Using a smart pointer Box we can use the type Box<dyn std::error::Error> as a common type for returning errors because it allows us to propogate up an error on the heap and interact with it at a high level without having to know a specific type.

Early in Tour of Rust we learned that main can return an error. We can now return a type capable of describing almost any kind of error that might occur in our program so long as the error's data structure implements Rust's common Error trait.

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