Struct mz_compute_client::plan::interpret::FoldMut
source · pub struct FoldMut<I, T, Action>where
I: Interpreter<T>,{
interpret: I,
action: Action,
ctx: Context<I::Domain>,
}Expand description
A wrapper for a recursive fold invocation over a Plan that can mutate its input.
Fields§
§interpret: I§action: Action§ctx: Context<I::Domain>Implementations§
source§impl<I, T, A> FoldMut<I, T, A>where
I: Interpreter<T>,
I::Domain: BoundedLattice + Clone,
A: FnMut(&mut Plan<T>, &I::Domain, &[I::Domain]),
impl<I, T, A> FoldMut<I, T, A>where I: Interpreter<T>, I::Domain: BoundedLattice + Clone, A: FnMut(&mut Plan<T>, &I::Domain, &[I::Domain]),
pub fn new(interpreter: I, action: A) -> Self
sourcepub fn apply(
&mut self,
expr: &mut Plan<T>
) -> Result<I::Domain, RecursionLimitError>
pub fn apply( &mut self, expr: &mut Plan<T> ) -> Result<I::Domain, RecursionLimitError>
An immutable fold (structural recursion) over a Plan instance.
Runs an abstract interpreter over the given expr in a bottom-up
manner, keeping the ctx field of the enclosing field up to date, and
returns the final result for the entire expr.
At each step, the current expr is passed along with the interpretation
result of itself and its children to an action callback that can
optionally mutate it.
fn apply_rec( &mut self, expr: &mut Plan<T>, rg: &RecursionGuard ) -> Result<I::Domain, RecursionLimitError>
Auto Trait Implementations§
impl<I, T, Action> RefUnwindSafe for FoldMut<I, T, Action>where Action: RefUnwindSafe, I: RefUnwindSafe, <I as Interpreter<T>>::Domain: RefUnwindSafe,
impl<I, T, Action> Send for FoldMut<I, T, Action>where Action: Send, I: Send, <I as Interpreter<T>>::Domain: Send,
impl<I, T, Action> Sync for FoldMut<I, T, Action>where Action: Sync, I: Sync, <I as Interpreter<T>>::Domain: Sync,
impl<I, T, Action> Unpin for FoldMut<I, T, Action>where Action: Unpin, I: Unpin,
impl<I, T, Action> UnwindSafe for FoldMut<I, T, Action>where Action: UnwindSafe, I: UnwindSafe, <I as Interpreter<T>>::Domain: RefUnwindSafe,
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> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Requestsource§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See
RustType::from_proto.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See
RustType::into_proto.