Error handling patterns in Rust

Common error handling patterns that help reduce verbosity in Rust