Skip to main content

Projection

Derive Macro Projection 

Source
#[derive(Projection)]
{
    // Attributes available to this derive:
    #[projection]
}
Expand description

Derives the Projection trait for a struct.

This macro always generates:

  • Projection trait implementation with KIND constant

It can also generate [ProjectionFilters] for the common case via events(...) (or explicit id / instance_id / metadata attributes), using Default for initialisation and a simple Filters::new().event::<E>()... filter set.

§Attributes

§Optional

  • kind = "name" - Projection type identifier (default: kebab-case struct name)
  • events(Event1, Event2, ...) - Auto-generate ProjectionFilters::filters with global event subscriptions.
  • id = Type - Override ProjectionFilters::Id (default: String when auto-generating ProjectionFilters)
  • instance_id = Type - Override ProjectionFilters::InstanceId (default: () when auto-generating ProjectionFilters)
  • metadata = Type - Override ProjectionFilters::Metadata (default: () when auto-generating ProjectionFilters)

§Example

#[derive(Default, Projection)]
pub struct AccountLedger {
    total: i64,
}