pub struct ProjectionMask {
mask: Option<Vec<bool>>,
}
Expand description
A ProjectionMask
identifies a set of columns within a potentially nested schema to project
In particular, a ProjectionMask
can be constructed from a list of leaf column indices
or root column indices where:
- Root columns are the direct children of the root schema, enumerated in order
- Leaf columns are the child-less leaves of the schema as enumerated by a depth-first search
For example, the schema
message schema {
REQUIRED boolean leaf_1;
REQUIRED GROUP group {
OPTIONAL int32 leaf_2;
OPTIONAL int64 leaf_3;
}
}
Has roots ["leaf_1", "group"]
and leaves ["leaf_1", "leaf_2", "leaf_3"]
For non-nested schemas, i.e. those containing only primitive columns, the root and leaves are the same
Fields§
§mask: Option<Vec<bool>>
If present a leaf column should be included if the value at the corresponding index is true
If None
, include all columns
Implementations§
Source§impl ProjectionMask
impl ProjectionMask
Sourcepub fn all() -> Self
pub fn all() -> Self
Create a ProjectionMask
which selects all columns
Sourcepub fn leaves(
schema: &SchemaDescriptor,
indices: impl IntoIterator<Item = usize>,
) -> Self
pub fn leaves( schema: &SchemaDescriptor, indices: impl IntoIterator<Item = usize>, ) -> Self
Create a ProjectionMask
which selects only the specified leaf columns
Note: repeated or out of order indices will not impact the final mask
i.e. [0, 1, 2]
will construct the same mask as [1, 0, 0, 2]
Sourcepub fn roots(
schema: &SchemaDescriptor,
indices: impl IntoIterator<Item = usize>,
) -> Self
pub fn roots( schema: &SchemaDescriptor, indices: impl IntoIterator<Item = usize>, ) -> Self
Create a ProjectionMask
which selects only the specified root columns
Note: repeated or out of order indices will not impact the final mask
i.e. [0, 1, 2]
will construct the same mask as [1, 0, 0, 2]
Sourcepub fn leaf_included(&self, leaf_idx: usize) -> bool
pub fn leaf_included(&self, leaf_idx: usize) -> bool
Returns true if the leaf column leaf_idx
is included by the mask
Trait Implementations§
Source§impl Clone for ProjectionMask
impl Clone for ProjectionMask
Source§fn clone(&self) -> ProjectionMask
fn clone(&self) -> ProjectionMask
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ProjectionMask
impl Debug for ProjectionMask
Source§impl PartialEq for ProjectionMask
impl PartialEq for ProjectionMask
impl Eq for ProjectionMask
impl StructuralPartialEq for ProjectionMask
Auto Trait Implementations§
impl Freeze for ProjectionMask
impl RefUnwindSafe for ProjectionMask
impl Send for ProjectionMask
impl Sync for ProjectionMask
impl Unpin for ProjectionMask
impl UnwindSafe for ProjectionMask
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
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