atomr-patterns 0.9.2

DDD/CQRS pattern library for atomr — aggregates, readers, projections, sagas, outbox, ACL.
Documentation
//! Pattern-level errors.

use atomr_core::actor::AskError;
use atomr_persistence::JournalError;

/// Errors raised by pattern-level operations.
///
/// Generic over the user's domain error `E`. Mirrors the shape of
/// [`atomr_persistence::EventsourcedError`] so downstream code can
/// pattern-match consistently.
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum PatternError<E> {
    #[error(transparent)]
    Domain(E),

    #[error("journal error: {0}")]
    Journal(#[from] JournalError),

    #[error("ask: {0}")]
    Ask(#[from] AskError),

    #[error("codec error: {0}")]
    Codec(String),

    #[error("invariant violation: {0}")]
    Invariant(String),

    #[error("pattern not configured: {0}")]
    NotConfigured(&'static str),

    #[error("intercepted: {0}")]
    Intercepted(String),

    #[error("concurrency conflict: expected version {expected}, actual {actual}")]
    ConcurrencyConflict { expected: u64, actual: u64 },

    #[error("reply channel dropped")]
    ReplyDropped,
}