Struct transform::inline_let::InlineLet [−][src]
pub struct InlineLet {
pub inline_mfp: bool,
recursion_guard: RecursionGuard,
}
Expand description
Install replace certain Get
operators with their Let
value.
Fields
inline_mfp: bool
If true
, inline MFPs around a Get.
We want this value to be true for the InlineLet call that comes right before crate::join_implementation::JoinImplementation runs because crate::join_implementation::JoinImplementation cannot lift MFPs through a Let.
Generally, though, we prefer to be more conservative in our inlining in order to be able to better detect CSEs.
recursion_guard: RecursionGuard
A RecursionGuard
to be used by the CheckedRecursion
implementation.
Implementations
pub fn action(
&self,
relation: &mut MirRelationExpr,
lets: &mut Vec<(LocalId, MirRelationExpr)>
) -> Result<(), TransformError>
pub fn action(
&self,
relation: &mut MirRelationExpr,
lets: &mut Vec<(LocalId, MirRelationExpr)>
) -> Result<(), TransformError>
Install replace certain Get
operators with their Let
value.
IMPORTANT: This transform is used for cleaning up after RelationCSE
, which
adds Let
operators pretty aggressively, leading to very deep dataflows. Nothing
in this transform should lead to expensive recursive traversal of the subgraph,
such as the one in MirRelationExpr::typ
, since that may result in a stack
overflow.
Trait Implementations
Extracts a reference to the recursion guard embedded within the type.
fn checked_recur<F, T, E>(&self, f: F) -> Result<T, E> where
F: FnOnce(&Self) -> Result<T, E>,
E: From<RecursionLimitError>,
fn checked_recur<F, T, E>(&self, f: F) -> Result<T, E> where
F: FnOnce(&Self) -> Result<T, E>,
E: From<RecursionLimitError>,
Checks whether it is safe to recur and calls f
if so. Read more
fn checked_recur_mut<F, T, E>(&mut self, f: F) -> Result<T, E> where
F: FnOnce(&mut Self) -> Result<T, E>,
E: From<RecursionLimitError>,
fn checked_recur_mut<F, T, E>(&mut self, f: F) -> Result<T, E> where
F: FnOnce(&mut Self) -> Result<T, E>,
E: From<RecursionLimitError>,
Like CheckedRecursion::checked_recur
, but operates on a mutable
reference to Self
. Read more
fn transform(
&self,
relation: &mut MirRelationExpr,
_: TransformArgs<'_>
) -> Result<(), TransformError>
fn transform(
&self,
relation: &mut MirRelationExpr,
_: TransformArgs<'_>
) -> Result<(), TransformError>
Transform a relation into a functionally equivalent relation.
Auto Trait Implementations
impl !RefUnwindSafe for InlineLet
impl UnwindSafe for InlineLet
Blanket Implementations
Mutably borrows from an owned value. Read more
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more