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.
0.5.0 - 2019-08-26
- Compiler errors are generated when SNAFU attributes are used in incorrect locations. This is a breaking change.
- Compiler errors are generated when SNAFU attributes are duplicated. This is a breaking change.
#[snafu(source(from))
implies#[snafu(source)]
(which implies#[snafu(source(true))]
);#[snafu(source)]
and#[snafu(source(true))]
can be removed in these cases.
- Multiple attributes can be specified inside of a single
#[snafu(...)]
.
#[snafu(backtrace(delegate))]
on source fields is replaced by#[snafu(backtrace)]
. This is a breaking change.
0.4.4 - 2019-08-07
- Ignore
#[doc]
attributes that do not correspond to documentation comments. This allows#[doc(hidden)]
to be used again.
- Implement
Future
andStream
instead ofTryFuture
andTryStream
for the combinators for the standard library's futures. This allows theContext
future combinator to be directly used with.await
and for theContext
stream combinator to be used without calling.into_stream
.
0.4.3 - 2019-07-23
- Add optional conversion of
&snafu::Backtrace
into&backtrace::Backtrace
.
- Support default generic parameters on error types.
0.4.2 - 2019-07-21
- 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.
0.4.1 - 2018-05-18
- A feature flag name was rejected by crates.io and needed to be updated; this release has no substantial changes beyond 0.4.0.
0.4.0 - 2018-05-18
-
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.
0.3.1 - 2019-05-10
- 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.
0.3.0 - 2019-05-08
-
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