pub trait DomainEvent:
Clone
+ Send
+ Sync
+ 'static {
// Required methods
fn event_type(&self) -> &'static str;
fn aggregate_id(&self) -> &str;
// Provided methods
fn occurred_at(&self) -> DateTime<Utc> { ... }
fn aggregate_type(&self) -> &'static str { ... }
fn version(&self) -> u32 { ... }
}Expand description
Trait for domain events
All domain events must implement this trait to be used with the EventBus. Domain events represent something that happened in the domain that domain experts care about.
§Example
ⓘ
use backbone_messaging::DomainEvent;
use chrono::{DateTime, Utc};
#[derive(Clone, Debug)]
struct OrderPlaced {
order_id: String,
customer_id: String,
total: f64,
placed_at: DateTime<Utc>,
}
impl DomainEvent for OrderPlaced {
fn event_type(&self) -> &'static str {
"OrderPlaced"
}
fn aggregate_id(&self) -> &str {
&self.order_id
}
fn occurred_at(&self) -> DateTime<Utc> {
self.placed_at
}
}Required Methods§
Sourcefn event_type(&self) -> &'static str
fn event_type(&self) -> &'static str
Returns the event type name (e.g., “UserCreated”, “OrderPlaced”)
Sourcefn aggregate_id(&self) -> &str
fn aggregate_id(&self) -> &str
Returns the aggregate ID this event belongs to
Provided Methods§
Sourcefn occurred_at(&self) -> DateTime<Utc>
fn occurred_at(&self) -> DateTime<Utc>
Returns when the event occurred Default implementation returns current time
Sourcefn aggregate_type(&self) -> &'static str
fn aggregate_type(&self) -> &'static str
Returns the aggregate type name (e.g., “User”, “Order”) Default implementation extracts from event type
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".