pub struct Projector<P, S>where
P: Projection,{ /* private fields */ }Expand description
A Projector manages the state of a single Projection
by opening a long-running stream of all events coming from the EventStore.
New instances of a Projector are obtainable through a ProjectorBuilder
instance.
The Projector will start updating the Projection state when run
is called.
At each update, the Projector will broadcast the latest version of the
Projection on a Stream obtainable through watch.
Implementations§
Source§impl<P, S> Projector<P, S>where
P: Projection,
<P as Projection>::SourceId: Debug,
<P as Projection>::Event: Debug,
S: Subscription<SourceId = P::SourceId, Event = P::Event>,
<P as Projection>::Error: StdError + Send + Sync + 'static,
<S as Subscription>::Error: StdError + Send + Sync + 'static,
impl<P, S> Projector<P, S>where
P: Projection,
<P as Projection>::SourceId: Debug,
<P as Projection>::Event: Debug,
S: Subscription<SourceId = P::SourceId, Event = P::Event>,
<P as Projection>::Error: StdError + Send + Sync + 'static,
<S as Subscription>::Error: StdError + Send + Sync + 'static,
Sourcepub fn new(projection: Arc<RwLock<P>>, subscription: S) -> Self
pub fn new(projection: Arc<RwLock<P>>, subscription: S) -> Self
Create a new Projector from the provided Projection and
Subscription values.
Sourcepub async fn run(&mut self) -> Result<()>
pub async fn run(&mut self) -> Result<()>
Starts the update of the Projection by processing all the events
coming from the EventStore.
Auto Trait Implementations§
impl<P, S> Freeze for Projector<P, S>where
S: Freeze,
impl<P, S> !RefUnwindSafe for Projector<P, S>
impl<P, S> Send for Projector<P, S>
impl<P, S> Sync for Projector<P, S>
impl<P, S> Unpin for Projector<P, S>where
S: Unpin,
impl<P, S> !UnwindSafe for Projector<P, S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more