Module prelude

Source
Expand description

Exports traits and aliased types to support the most common use-cases (when neither core::error::Error nor std are available).

In Rust versions before v1.81, core::error::Error is not stable. In #![no_std] builds before Rust v1.81, std::error::Error is not available either. This prelude exports the surrogate error trait Reportable and type aliases that can be used in these cases. Consider using Rust v1.81 or newer, or (if that’s not possible) consider enabling the std feature. Doing either makes the “regular” lazy_errors::prelude::* available. Types exported from the “regular” prelude are compatible with other crates.

When using any container from lazy_errors, such as lazy_errors::Error or lazy_errors::ErrorStash, you usually don’t want to specify the inner error type I explicitly. This prelude exports type aliases for all types that otherwise need the I parameter. The specific type used as I makes the aliased types from the prelude well suited for the common “just bail out now (or later)” use case.

Usually, anything that you want to treat as an error can be boxed into a lazy_errors::Stashable. When core::error::Error is not available and you don’t want to introduce a dependency on std, you need an alternative to lazy_errors::Stashable. Reportable is a surrogate for std::error::Error/core::error::Error. lazy_errors::surrogate_error_trait::Stashable is for Reportable what lazy_errors::Stashable is for core::error::Error. Also, using the 'static bound for the trait object usually works fine. Thus, Stashable<'static> is the inner error type I for all container type aliases exported by this prelude. We also define and export Stashable as an alias for Stashable<'static> for readability, ergonomics, and maintainability.

If you want to use different inner error types, you can go ahead and use the container and wrapper types from this library directly. In that case, please check out the example in the crate root documentation.

Re-exports§

pub use crate::OrCreateStash;
pub use crate::OrStash;
pub use crate::OrWrap;
pub use crate::OrWrapWith;
pub use crate::StashErr;
pub use crate::TryCollectOrStash;
pub use crate::TryMapOrStash;

Macros§

err
Creates an ad-hoc Error from some message or format string.
try2
Works like the ? operator on StashedResult should.

Type Aliases§

AdHocError
Type alias for crate::AdHocError to get access to all error types by importing lazy_errors::surrogate_error_trait::prelude::*.
Error
Type alias for crate::Error to use a boxed inner error type I, as explained in the module documentation.
ErrorData
Type alias for crate::ErrorData to use a boxed inner error type I, as explained in the module documentation.
ErrorStash
Type alias for crate::ErrorStash to use a boxed inner error type I, as explained in the module documentation.
StashWithErrors
Type alias for crate::StashWithErrors to use a boxed inner error type I, as explained in the module documentation.
Stashable
Type alias for super::Stashable to use a 'static bound for the boxed inner error type I trait object, as explained in the module documentation.
StashedErrors
Type alias for crate::StashedErrors to use a boxed inner error type I, as explained in the module documentation.
StashedResult
Type alias for crate::StashedResult to use a boxed inner error type I, as explained in the module documentation.
WrappedError
Type alias for crate::WrappedError to use a boxed inner error type I, as explained in the module documentation.