6 ms·
I hope to read through your crate and examples later, but if you have a chance, I’d be curious to hear your take on how Stack Error differs from my library, SNA
by shepmaster 1y ago
I hope to read through your crate and examples later, but if you have a chance, I’d be curious to hear your take on how Stack Error differs from my library, SNAFU [1]!
[1]: https://docs.rs/snafu/latest/snafu/index.html https://docs.rs/snafu/latest/snafu/index.html
- garrinm 1y agoI played around a bit with SNAFU a couple of years ago, but I'm haven't worked deeply with the library so there might well be some features I'm not aware of. I think SNAFU is more like a combination of anyhow and thiserror into a single crate, rather than Stack Error which leans more heavily into the "turnkey" error struct. Using the Whatever struct, you get some overlap with Stack Error features: - Error message are co-located. - Error type implement std::error::Error (suitable for library development). - External errors can be wrapped and context can easily be added. Where Stack Error differs: - Error codes (and URIs) offer ability for runtime error handling without having to compare strings. - Provides pseudo-stack by stacking messages. Underlying this is an opinion I baked into Stack Error: error messages are for debugging, not for runtime error handling. Otherwise all your error strings effectively become part of your public interface since a downstream library can rely on them for error handling.