pub struct BackendFrontier<B, T> { /* private fields */ }Expand description
A backend whose inputs are read as of since: every time the inner backend draws is advanced
by it, and what then coincides is consolidated.
Only reads are translated. Outputs are the inner backend’s, at the operator’s times, which are
beyond since once its inputs are. An empty since reads the inputs as they are.
Implementations§
Trait Implementations§
Source§impl<T, B0, B1, B> ProxyJoinBackend<T, B0, B1> for BackendFrontier<B, T>
impl<T, B0, B1, B> ProxyJoinBackend<T, B0, B1> for BackendFrontier<B, T>
Source§type Key = <B as ProxyJoinBackend<T, B0, B1>>::Key
type Key = <B as ProxyJoinBackend<T, B0, B1>>::Key
Independent groups, common to both inputs.
Source§type V0 = <B as ProxyJoinBackend<T, B0, B1>>::V0
type V0 = <B as ProxyJoinBackend<T, B0, B1>>::V0
First input value proxies, valid throughout a block.
Source§type V1 = <B as ProxyJoinBackend<T, B0, B1>>::V1
type V1 = <B as ProxyJoinBackend<T, B0, B1>>::V1
Second input value proxies, valid throughout a block.
Source§type R0 = <B as ProxyJoinBackend<T, B0, B1>>::R0
type R0 = <B as ProxyJoinBackend<T, B0, B1>>::R0
Diff type of the first input.
Source§type R1 = <B as ProxyJoinBackend<T, B0, B1>>::R1
type R1 = <B as ProxyJoinBackend<T, B0, B1>>::R1
Diff type of the second input.
Source§type ROut = <B as ProxyJoinBackend<T, B0, B1>>::ROut
type ROut = <B as ProxyJoinBackend<T, B0, B1>>::ROut
Diff type of matched records (
R0 * R1), computed by the harness.Source§type Output = <B as ProxyJoinBackend<T, B0, B1>>::Output
type Output = <B as ProxyJoinBackend<T, B0, B1>>::Output
The output container built from matched value ids.
Source§fn advance(
&mut self,
instance: &JoinInstance<T, B0, B1>,
from: &mut KeyPosition<Self::Key>,
bridge0: &mut ProxyBridge<T, Self::R0, Self::Key, Self::V0>,
bridge1: &mut ProxyBridge<T, Self::R1, Self::Key, Self::V1>,
)
fn advance( &mut self, instance: &JoinInstance<T, B0, B1>, from: &mut KeyPosition<Self::Key>, bridge0: &mut ProxyBridge<T, Self::R0, Self::Key, Self::V0>, bridge1: &mut ProxyBridge<T, Self::R1, Self::Key, Self::V1>, )
Populates the two bridges with all updates for all keys that match in a returned range. Read more
Source§fn cross(
&mut self,
instance: &JoinInstance<T, B0, B1>,
matches: &mut JoinMatches<T, Self::ROut, Self::Key, Self::V0, Self::V1>,
output: &mut Vec<Self::Output>,
)
fn cross( &mut self, instance: &JoinInstance<T, B0, B1>, matches: &mut JoinMatches<T, Self::ROut, Self::Key, Self::V0, Self::V1>, output: &mut Vec<Self::Output>, )
Interpret matches derived from the immediately preceding
Self::advance call and place
them in output. The iterator calls cross before another advance, so a backend may keep
block-local interpretation state between the two calls. cross may be skipped when the
block produced no matches, in which case the next advance may overwrite that state.Source§impl<T, B1, B2, B> ProxyReduceBackend<T, B1, B2> for BackendFrontier<B, T>
impl<T, B1, B2, B> ProxyReduceBackend<T, B1, B2> for BackendFrontier<B, T>
Source§type Key = <B as ProxyReduceBackend<T, B1, B2>>::Key
type Key = <B as ProxyReduceBackend<T, B1, B2>>::Key
Independent groups, with identities stable across retires.
Source§type VIn = <B as ProxyReduceBackend<T, B1, B2>>::VIn
type VIn = <B as ProxyReduceBackend<T, B1, B2>>::VIn
Input value proxies, valid throughout a window.
Source§type VOut = <B as ProxyReduceBackend<T, B1, B2>>::VOut
type VOut = <B as ProxyReduceBackend<T, B1, B2>>::VOut
Output value proxies, including newly produced values, valid throughout a window.
Source§type RIn = <B as ProxyReduceBackend<T, B1, B2>>::RIn
type RIn = <B as ProxyReduceBackend<T, B1, B2>>::RIn
Diff type presented for the input.
Source§type ROut = <B as ProxyReduceBackend<T, B1, B2>>::ROut
type ROut = <B as ProxyReduceBackend<T, B1, B2>>::ROut
Diff type of the output.
Source§fn begin(&mut self, description: Description<T>)
fn begin(&mut self, description: Description<T>)
Initiate a session to create batches for these descriptions, which span
[lower, upper). Read moreSource§fn next_window(
&mut self,
instance: &ReduceInstance<'_, T, B1, B2>,
changed: &[Self::Key],
from: &mut KeyPosition<Self::Key>,
window: &mut ReduceWindow<T, Self::RIn, Self::ROut, Self::Key, Self::VIn, Self::VOut>,
)
fn next_window( &mut self, instance: &ReduceInstance<'_, T, B1, B2>, changed: &[Self::Key], from: &mut KeyPosition<Self::Key>, window: &mut ReduceWindow<T, Self::RIn, Self::ROut, Self::Key, Self::VIn, Self::VOut>, )
Present the next window of the key space, and advance
from past it. Read moreSource§fn reduce_corrections(
&mut self,
keys: &[Self::Key],
in_ends: &[usize],
input: &[(Self::VIn, Self::RIn)],
out_ends: &[usize],
output: &[(Self::VOut, Self::ROut)],
) -> (Vec<(Self::VOut, Self::ROut)>, Vec<usize>)
fn reduce_corrections( &mut self, keys: &[Self::Key], in_ends: &[usize], input: &[(Self::VIn, Self::RIn)], out_ends: &[usize], output: &[(Self::VOut, Self::ROut)], ) -> (Vec<(Self::VOut, Self::ROut)>, Vec<usize>)
A wave of input-output reconciliation, in which the backend supplies necessary edits. Read more
Auto Trait Implementations§
impl<B, T> Freeze for BackendFrontier<B, T>
impl<B, T> RefUnwindSafe for BackendFrontier<B, T>
impl<B, T> Send for BackendFrontier<B, T>
impl<B, T> Sync for BackendFrontier<B, T>
impl<B, T> Unpin for BackendFrontier<B, T>
impl<B, T> UnsafeUnpin for BackendFrontier<B, T>
impl<B, T> UnwindSafe for BackendFrontier<B, T>
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
Source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
The method of
std::ops::AddAssign, for types that do not implement AddAssign.