Notice: Failure lib is deprecated now
[EDIT: Also snafu, hello there Shepmaster :P ]
It works well for libraries and applications and has bells and whistles you might want, such as backtrace captures on stable Rust.
You can see what the libraries do by expanding the procedural macros they use. When you look at the output, it's nothing special that you couldn't have done yourself!
See https://rust-starter.github.io/#feature-errors for why Failure is still used.