Rust By Example

Result is a richer version of the Option type that
describes possible error instead of possible absence.

That is, Result<T, E> could have one of two outcomes:

Ok<T>: An element T was found

Err<E>: An error was found with element E

By convention, the expected outcome is Ok while the unexpected outcome is Err.

Like Option, Result has many methods associated with it. unwrap(), for
example, either yields the element T or panics. For case handling,
there are many combinators between Result and Option that overlap.

In working with Rust, you will likely encounter methods that return the
Result type, such as the parse() method. It might not always
be possible to parse a string into the other type, so parse() returns a
Result indicating possible failure.

Let's see what happens when we successfully and unsuccessfully parse() a string:

The Result type can also be the return type of the main function if
specified explicitly. Typically the main function will be of the form:

fn main() {
println!("Hello World!");
}

However main is also able to have a return type of Result. If an error
occurs within the main function it will return an error code and print a debug
representation of the error (using the Debug trait). The following example
shows such a scenario and touches on aspects covered in the following section.