All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add optional conversion of
&snafu::Backtrace
into&backtrace::Backtrace
- Support default generic parameters on error types
- Documentation comment summaries are used as the default
Display
text.
- Quieted warnings from usages of bare trait objects.
- The
From
trait is fully-qualified to avoid name clashes.
- More errors are reported per compilation attempt.
- A feature flag name was rejected by crates.io and needed to be updated; this release has no substantial changes beyond 0.4.0.
-
Context selectors now automatically implement
Debug
,Copy
, andClone
. This is a breaking change. -
Support for futures 0.1 futures and streams is available using the
futures-01
feature flag. -
Experimental support for standard library futures and streams is available using the
unstable-futures
feature flag.
eager_context
andwith_eager_context
have been deprecated.
-
The
Context
type is no longer needed. This is a breaking change. -
SNAFU types no longer implement
Borrow<std::error::Error>
. This is a breaking change.
- Underlying error causes of
Box<dyn std::error::Error + Send + Sync>
are now supported.
Borrow
is no longer required to be implemented for underlying error causes. In the next release containing breaking changes, the automatic implementation ofBorrow<dyn std::error::Error>
for SNAFU types will be removed.
-
Borrow<std::error::Error>
is now automatically implemented for SNAFU types. This is a breaking change as it may conflict with an existing user implementation of the same trait. It is expected that the number of affected users is very small. -
#[snafu(source)]
can be used to identify the field that corresponds to the underlying error if it is not calledsource
. It can also be used to disable automatically using a field calledsource
for the underlying error. -
#[snafu(backtrace)]
can be used to identify the field that corresponds to the backtrace if it is not calledbacktrace
. It can also be used to disable automatically using a field calledbacktrace
for the backtrace. -
#[snafu(source(from(...type..., ...expression...)))]
can be used to perform transformations on the underlying error before it is stored. This allows boxing of large errors to avoid bloated return types or recursive errors. -
The user guide has a basic comparison to Failure and migration paths for common Failure patterns.
- The default
Display
implementation includes the underlying error message.
0.2.3 - 2019-04-24
- User-provided
where
clauses on error types are now copied to SNAFU-createdimpl
blocks. - User-provided inline trait bounds (
<T: SomeTrait>
) are no longer included in SNAFU-generated type names.
0.2.2 - 2019-04-19
- Error enums with variants named
Some
orNone
no longer cause name conflicts in the generated code.
0.2.1 - 2019-04-14
- Deriving
Snafu
on a newtype struct now creates an opaque error type, suitable for conservative public APIs.
0.2.0 - 2019-03-02
snafu::display
andsnafu_display
have been replaced withsnafu(display)
snafu_visibility
has been replaced withsnafu(visibility)
- Backtraces can now be delegated to an underlying error via
#[snafu(backtrace(delegate))]
.
0.1.9 - 2019-03-02
- Error enums with generic lifetimes and types are now supported.
- The trait bounds applied to the
fail
method have been moved from the implementation block to the function itself.
0.1.8 - 2019-02-27
- Visibility is now applied to context selector fields.
0.1.7 - 2019-02-27
#[snafu_visibility]
can be used to configure the visibility of context selectors.
0.1.6 - 2019-02-24
- The
OptionExt
extension trait is now available for convertingOption
s intoResult
s while adding context.
0.1.5 - 2019-02-05
- Errors from the macro are more detailed and point to reasonable sections of code.
0.1.4 - 2019-02-05
- The
ensure
macro is now available.
0.1.3 - 2019-02-04
- Ability to automatically capture backtraces.
- Version requirements for dependencies loosened to allow compiling with more crate versions.
0.1.2 - 2019-02-02
- Support for Rust 1.18
0.1.1 - 2019-02-01
-
Context selectors without an underlying source now have a
fail
method. -
ResultExt
now has theeager_context
andwith_eager_context
methods to eagerly convert a sourceResult
into a finalResult
type, skipping the intermediateResult<_, Context<_>>
type.
0.1.0 - 2019-01-27
Initial version