| I 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. |