> Rust has:
- monadic constructs (Option & Result) - the error propagation operator - the From trait, to automatically convert errors on propagation
> The combination of the three features above makes up the best error handling solution I saw in a language, being simple, sound, and maintainable at the same time.
I absolutely agree with this. The error handling in Rust is fantastic to work with.
Once I learned about bullet three, error handling became less of a chore and more of non-issue while staying confident that any errors would be handled correctly.