Ergonomic errors in Rust: write fast, debug with ease, handle precisely
gmcgoldr.github.io
Ergonomic errors in Rust: write fast, debug with ease, handle precisely
1–10 of 28 posts
Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#2Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#3Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#4This just feels like recreating exceptions, but with more complicated syntax.
Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#5How is this different from the even more ergonomic “#[from]” provided by thiserror?
I'd rather hand-roll errors than deal with more proc macros. Or better yet, have code gen pay the cost once and never deal with it again.
Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#6Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#7Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#8How is this different from the even more ergonomic “#[from]” provided by thiserror?
Are all of these proc macros worth it? The compile times for proc macros explode. I'd rather hand-roll errors than deal with more proc macros. Or better yet, have code gen pay the cost once and never deal with it again.
Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#9Earlier quoted context omitted.
Are all of these proc macros worth it? The compile times for proc macros explode. I'd rather hand-roll errors than deal with more proc macros. Or better yet, have code gen pay the cost once and never deal with it again.
Cognitive load is more expensive than compilation time.
Re: Ergonomic errors in Rust: write fast, debug with ease, handle precisely
#10The general advice is good (except for the awkward use of std error), so for anyone who wants to know what rustaceans are actually using:
- std error when it’s required
- anyhow for flexibly dealing with large classes of errors and rethrowing (often in bin crates or internally in a lib crate ), use anyhow::Context to tag errors
- thiserror for building and generating custom errors (in a lib crate)
- miette/eyre for more advanced features
Watch out for exposing error types in public API because then you are bound to push a breaking change if the upstream does.
Anyhow will probably never have a v2 at this point IMO, the entire Rust ecosystem might have to rev!
[EDIT] dont want to suggest that people avoid stackerror, just want to show what other ecosystem projects there are! stackerror seems to fit the hole of anyhow.