While dealing with errors in any langauge is irritating, I think Rust has the best ideas.
* Pattern-matching for success/error check
* Error passing with the `?` operator
* The correct error seems to appear when panicing due to an `unwrap` call
The most irksome thing remaining is to have to create your own error objects..