Struct datafusion::common::tree_node::Transformed
source · pub struct Transformed<T> {
pub data: T,
pub transformed: bool,
pub tnr: TreeNodeRecursion,
}
Expand description
Result of tree walk / transformation APIs
API users control the transformation by returning:
- The resulting (possibly transformed) node,
transformed
: flag indicating whether any change was made to the nodetnr
:TreeNodeRecursion
specifying how to proceed with the recursion.
At the end of the transformation, the return value will contain:
- The final (possibly transformed) tree,
transformed
: flag indicating whether any change was made to the nodetnr
:TreeNodeRecursion
specifying how the recursion ended.
Example APIs:
Fields§
§data: T
§transformed: bool
§tnr: TreeNodeRecursion
Implementations§
source§impl<T> Transformed<T>
impl<T> Transformed<T>
sourcepub fn new(data: T, transformed: bool, tnr: TreeNodeRecursion) -> Transformed<T>
pub fn new(data: T, transformed: bool, tnr: TreeNodeRecursion) -> Transformed<T>
Create a new Transformed
object with the given information.
sourcepub fn yes(data: T) -> Transformed<T>
pub fn yes(data: T) -> Transformed<T>
Wrapper for transformed data with TreeNodeRecursion::Continue
statement.
sourcepub fn no(data: T) -> Transformed<T>
pub fn no(data: T) -> Transformed<T>
Wrapper for unchanged data with TreeNodeRecursion::Continue
statement.
sourcepub fn update_data<U, F>(self, f: F) -> Transformed<U>where
F: FnOnce(T) -> U,
pub fn update_data<U, F>(self, f: F) -> Transformed<U>where
F: FnOnce(T) -> U,
Applies an infallible f
to the data of this Transformed
object,
without modifying the transformed
flag.
sourcepub fn map_data<U, F>(self, f: F) -> Result<Transformed<U>, DataFusionError>
pub fn map_data<U, F>(self, f: F) -> Result<Transformed<U>, DataFusionError>
Applies a fallible f
(returns Result
) to the data of this
Transformed
object, without modifying the transformed
flag.
sourcepub fn transform_data<U, F>(
self,
f: F,
) -> Result<Transformed<U>, DataFusionError>
pub fn transform_data<U, F>( self, f: F, ) -> Result<Transformed<U>, DataFusionError>
Applies a fallible transforming f
to the data of this Transformed
object.
The returned Transformed
object has the transformed
flag set if either
self
or the return value of f
have the transformed
flag set.
sourcepub fn transform_children<F>(
self,
f: F,
) -> Result<Transformed<T>, DataFusionError>
pub fn transform_children<F>( self, f: F, ) -> Result<Transformed<T>, DataFusionError>
Maps the Transformed
object to the result of the given f
depending on the
current TreeNodeRecursion
value and the fact that f
is changing the current
node’s children.
sourcepub fn transform_sibling<F>(
self,
f: F,
) -> Result<Transformed<T>, DataFusionError>
pub fn transform_sibling<F>( self, f: F, ) -> Result<Transformed<T>, DataFusionError>
Maps the Transformed
object to the result of the given f
depending on the
current TreeNodeRecursion
value and the fact that f
is changing the current
node’s sibling.
sourcepub fn transform_parent<F>(
self,
f: F,
) -> Result<Transformed<T>, DataFusionError>
pub fn transform_parent<F>( self, f: F, ) -> Result<Transformed<T>, DataFusionError>
Maps the Transformed
object to the result of the given f
depending on the
current TreeNodeRecursion
value and the fact that f
is changing the current
node’s parent.
Trait Implementations§
source§impl<T> Debug for Transformed<T>where
T: Debug,
impl<T> Debug for Transformed<T>where
T: Debug,
source§impl<T> PartialEq for Transformed<T>where
T: PartialEq,
impl<T> PartialEq for Transformed<T>where
T: PartialEq,
source§fn eq(&self, other: &Transformed<T>) -> bool
fn eq(&self, other: &Transformed<T>) -> bool
self
and other
values to be equal, and is used
by ==
.impl<T> StructuralPartialEq for Transformed<T>
Auto Trait Implementations§
impl<T> Freeze for Transformed<T>where
T: Freeze,
impl<T> RefUnwindSafe for Transformed<T>where
T: RefUnwindSafe,
impl<T> Send for Transformed<T>where
T: Send,
impl<T> Sync for Transformed<T>where
T: Sync,
impl<T> Unpin for Transformed<T>where
T: Unpin,
impl<T> UnwindSafe for Transformed<T>where
T: UnwindSafe,
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
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>
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>
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 more