CQRS/ES framework for Rust using Plain Old Rust Structs — append-only events, replay, snapshots, outbox, service bus, and pluggable infrastructure
CQRS/ES framework for Rust using Plain Old Rust Structs — append-only events, replay, snapshots, outbox, service bus, and pluggable infrastructure
Cast between trait objects using only safe Rust.
Simple trait for helping along upcasting of dyn supertraits. ``` pub trait A {} pub trait B: A + Upcast<dyn A> {} // Put this in your library impl<'a, T: A + 'a> UpcastFrom<T> for dyn A + 'a { fn up_from(value: &T) -> &(dyn A + 'a) { value } fn up_from_mut(value: &mut T) -> &mut (dyn A + 'a) { value } } // Now your users can do an upcast if needed, or you can within implementations fn do_cast(b: &dyn B) -> &dyn A { b.up() } ```
Arithmetic that is upcasted on overflow
Cast between trait objects using only safe Rust.
Pattern types emulation for conditional variants using conditional never types
A minuscule rust library that allows trait objects to be easily upcast to Any
An attribute macro that generates methods for retrieving supertraits from trait-objects (upcasting).
Domain layer for the eventide DDD/CQRS toolkit: aggregates, entities, value objects, domain events, repositories, and an in-memory event engine.
Get your own Any with support for casting to trait objects.
Maps where keys borrow from values, including bijective and trijective maps.