Rust: replace failure error handling strategy
As noted in project 2, I don't want to use failure for this project. Come up with a new strategy. I have some ideas, but not fully formed, and I'm not happy with the tools currently available.
Personally I'm leaning toward open-coding error types, but using singe-purpose proc-macros where appropriate, e.g. using #[derive(From)] to avoid all the conversion boilerplate.
For reference here is the pattern I'm playing with on a side project: https://github.com/brson/basic-http-server/blob/next/src/main.rs#L360. I think that is pretty hideous given the available macros, and I would not ask anybody to duplicate that pattern as-is.
I want to also talk about "semantic" error varients, e.g. the difference between Io(io::Error) and CommitError(io::Error).