pub trait Extract {
type Time;
type Output;
// Required method
fn extract<'a>(
&'a mut self,
upper: AntichainRef<'_, Self::Time>,
) -> (Option<Self::Output>, AntichainRef<'a, Self::Time>);
}Expand description
Supertrait for Batcher that ensures a consistent time and output across C0 implementations.
Required Associated Types§
Required Methods§
Sourcefn extract<'a>(
&'a mut self,
upper: AntichainRef<'_, Self::Time>,
) -> (Option<Self::Output>, AntichainRef<'a, Self::Time>)
fn extract<'a>( &'a mut self, upper: AntichainRef<'_, Self::Time>, ) -> (Option<Self::Output>, AntichainRef<'a, Self::Time>)
Extracts the updates upper unblocks as a batch, and lower bounds the times of those retained.
What upper unblocks is the implementor’s to decide. It can be based on the antichain up
set, or it can be based on the total order of times (as used in delta join constructions).
Absent a batch, upper unblocked no updates.
The reported lower bound should accurately reflect the times of all accepted updates that have not been extracted. Over approximation can result in stalling dataflows, and under approximation is simply incorrect.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".