All significant changes to this project will be documented in this file.
- Remove
Exn::raise_all(parent, children). ImportIteratorExtand usechildren.into_iter().raise(parent)instead. - Remove the unused
ResultExt::Errorassociated type. Generic code that named it must carry the error type separately.
- Let a bare
Exnserve as the standard type-erased boundary. Concrete errors and typedExn<E>values convert into it throughFromand?; converting a typed exception preserves its complete frame tree and runtime error types without another allocation. - Add
IteratorExt::raiseto aggregate an iterator of errors or typed or type-erased exceptions beneath one typed parent. - Allow
Exn<E>and marker-only adapters to use unsized root markers. Construction still requires a sized error passed by value, and conversion into arbitrary custom trait-object markers is not provided.
- Include the Apache-2.0 license in the published
exnpackage.
- Use a more compact ASCII tree format for default
Debugoutput.
- Fix conversion from
Exn<E>into boxedstd::error::Errortrait objects.
Exn::from_iterhas been renamed toExn::raise_allexn::Errortrait bound has been removed in favor of inlinedStdError + Send + Sync + 'staticbounds.err.raise()has been moved to theexn::ErrorExtextension trait.Exn::error(&self)has been replaced withimpl Deref<Target = E> for Exn<E>.
Exn<E>now implementsDeref<Target = E>, allowing for more ergonomic access to the inner error.- This crate is now
no_stdcompatible, while thealloccrate is still required for heap allocations. It is worth noting thatno_stdsupport is a nice-to-have feature, and can be dropped if it blocks other important features in the future. Before 1.0, onceexnAPIs settle down, the decision on whether to keepno_stdas a promise will be finalized. Framenow implementsstd::error::Error.- Support convert
Exn<E>intoBox<dyn std::error::Error>.