the cloneable_errors crate
this is basically the core functionality of anyhow, but written from scratch, in safe rust.
this library was previously an internal error_handling crate in DeArrow Browser
and was licensed together with the entire project under AGPL.
it was spun off into it's own public crate and is now licensed under MIT.
why?
anyhow errors are not cloneable - caching them is annoying, especially if you want to add more context later on
this crate aims to be a simpler, hopefully less annoying alternative if you do the things I do
- errors use Arc<> internally
- there's a serializable variant that drops a lot of data, but makes it easy to send error info between workers or over the wire
deps
- no required dependencies
- serde optionally required for serializing the serializable error variant (enable the
serdefeature) - anyhow optionally required for turning anyhow errors into serializable errors (enable the
anyhowfeature)
optional features
serde: derives (de)serialization traits for theSerializableErrorstructbincode: derivesEncodeandDecodetraits for theSerializableErrorstructanyhow: adds compatibility functions and traits foranyhowerror stacks (using those will flatten the errors stacks intoSerializableErrors)extensions: enablesErrorContextobjects to hold arbitrary "extension" attributes (side effect: increases the size of that struct)