I use a similar method for error handing, using the derive_more crate to avoid the boilerplate. I really wish that the error messages for standard library operations, like opening a file, were more descriptive. It's a pain to have to wrap the error with the filename ever time you do an IO operation.