pub struct StructFields(/* private fields */);Expand description
Type information for a struct column.
The StructFields holds all field names and field types, and provides
access to them by index or by name.
§Duplicate field names
In memory, it is not an error for a StructFields to contain duplicate
field names. In that case, any name-based access to fields will resolve
to the first such field with a given name.
let fields = StructFields::from_iter([
("string_col", DType::Utf8(Nullability::NonNullable)),
("binary_col", DType::Binary(Nullability::NonNullable)),
("int_col", DType::Primitive(PType::I32, Nullability::Nullable)),
("int_col", DType::Primitive(PType::I64, Nullability::Nullable)),
]);
// Accessing a field by name will yield the first
assert_eq!(fields.field("int_col").unwrap(), DType::Primitive(PType::I32, Nullability::Nullable));Implementations§
Source§impl StructFields
impl StructFields
Sourcepub fn new(names: FieldNames, dtypes: Vec<DType>) -> Self
pub fn new(names: FieldNames, dtypes: Vec<DType>) -> Self
Create a new StructFields from a list of names and dtypes
Sourcepub fn from_fields(names: FieldNames, dtypes: Vec<FieldDType>) -> Self
pub fn from_fields(names: FieldNames, dtypes: Vec<FieldDType>) -> Self
Create a new StructFields from a list of names and FieldDType which can be either lazily or eagerly serialized.
Sourcepub fn names(&self) -> &FieldNames
pub fn names(&self) -> &FieldNames
Get the names of the fields in the struct
Sourcepub fn field_name(&self, index: usize) -> Option<&FieldName>
pub fn field_name(&self, index: usize) -> Option<&FieldName>
Returns the name of the field at the given index
Sourcepub fn find(&self, name: impl AsRef<str>) -> Option<usize>
pub fn find(&self, name: impl AsRef<str>) -> Option<usize>
Find the index of a field by name
Returns None if the field is not found
Sourcepub fn field(&self, name: impl AsRef<str>) -> Option<DType>
pub fn field(&self, name: impl AsRef<str>) -> Option<DType>
Get the DType of a field.
It is possible for there to be more than one field with the same name, in which case, this will return the DType of the first field encountered with a given name.
Sourcepub fn fields(&self) -> impl ExactSizeIterator<Item = DType> + '_
pub fn fields(&self) -> impl ExactSizeIterator<Item = DType> + '_
Returns an ordered iterator over the fields.
Sourcepub fn project(&self, projection: &[FieldName]) -> VortexResult<Self>
pub fn project(&self, projection: &[FieldName]) -> VortexResult<Self>
Project a subset of fields from the struct
If any of the fields are not found, this method will return an error.
Sourcepub fn without_field(&self, index: usize) -> VortexResult<Self>
pub fn without_field(&self, index: usize) -> VortexResult<Self>
Returns a new StructFields without the field at the given index.
§Errors
Returns an error if the index is out of bounds for the struct fields.
Sourcepub fn disjoint_merge(&self, other: &Self) -> VortexResult<Self>
pub fn disjoint_merge(&self, other: &Self) -> VortexResult<Self>
Merge two StructFields instances into a new one.
Order of fields in arguments is preserved
§Errors
Returns an error if the merged struct would have duplicate field names.
Trait Implementations§
Source§impl Clone for StructFields
impl Clone for StructFields
Source§fn clone(&self) -> StructFields
fn clone(&self) -> StructFields
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StructFields
impl Debug for StructFields
Source§impl Default for StructFields
impl Default for StructFields
Source§impl Display for StructFields
impl Display for StructFields
Source§impl FromArrowType<&Fields> for StructFields
impl FromArrowType<&Fields> for StructFields
Source§fn from_arrow(value: &Fields) -> Self
fn from_arrow(value: &Fields) -> Self
Source§impl<T, V> FromIterator<(T, V)> for StructFields
impl<T, V> FromIterator<(T, V)> for StructFields
Source§impl Hash for StructFields
impl Hash for StructFields
Source§impl PartialEq for StructFields
impl PartialEq for StructFields
impl Eq for StructFields
impl StructuralPartialEq for StructFields
Auto Trait Implementations§
impl Freeze for StructFields
impl RefUnwindSafe for StructFields
impl Send for StructFields
impl Sync for StructFields
impl Unpin for StructFields
impl UnwindSafe for StructFields
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§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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