mnesis 0.1.0

A zero-compromise event-sourcing and CQRS kernel for Rust with maximum compile-time type safety
Documentation
use mnesis::{KernelError, Version};

#[test]
fn version_mismatch_display_exact() {
    let err = KernelError::VersionMismatch {
        expected: Version::new(3).unwrap(),
        actual: Version::new(5).unwrap(),
    };
    assert_eq!(format!("{err}"), "Version mismatch: expected 3, got 5");
}

#[test]
fn version_mismatch_display_with_initial() {
    let err = KernelError::VersionMismatch {
        expected: Version::INITIAL,
        actual: Version::new(100).unwrap(),
    };
    assert_eq!(format!("{err}"), "Version mismatch: expected 1, got 100");
}

#[test]
fn rehydration_limit_exceeded_display() {
    let err = KernelError::RehydrationLimitExceeded { max: 1_000_000 };
    assert_eq!(
        format!("{err}"),
        "Rehydration limit exceeded: max 1000000 events"
    );
}

#[test]
fn version_overflow_display() {
    let err = KernelError::VersionOverflow;
    assert_eq!(
        format!("{err}"),
        "Version sequence exhausted: cannot exceed u64::MAX events"
    );
}

#[test]
fn kernel_error_implements_std_error() {
    let err = KernelError::VersionMismatch {
        expected: Version::INITIAL,
        actual: Version::new(2).unwrap(),
    };
    let _: &dyn std::error::Error = &err;
}

#[test]
fn kernel_error_is_send_and_sync() {
    fn assert_send_sync<T: Send + Sync>() {}
    assert_send_sync::<KernelError>();
}