pub struct Field {
pub name: String,
pub id: i32,
pub parent_id: i32,
pub logical_type: LogicalType,
pub metadata: HashMap<String, String>,
pub encoding: Option<Encoding>,
pub nullable: bool,
pub children: Vec<Field>,
pub dictionary: Option<Dictionary>,
pub storage_class: StorageClass,
pub unenforced_primary_key: bool,
}
Expand description
Lance Schema Field
Fields§
§name: String
§id: i32
§parent_id: i32
§logical_type: LogicalType
§metadata: HashMap<String, String>
§encoding: Option<Encoding>
§nullable: bool
§children: Vec<Field>
§dictionary: Option<Dictionary>
Dictionary value array if this field is dictionary.
storage_class: StorageClass
§unenforced_primary_key: bool
Implementations§
Source§impl Field
impl Field
Sourcepub fn new_arrow(
name: &str,
data_type: DataType,
nullable: bool,
) -> Result<Field, Error>
pub fn new_arrow( name: &str, data_type: DataType, nullable: bool, ) -> Result<Field, Error>
Shortcut for creating a field with no field id (i.e. from the same info needed to create an Arrow field)
pub fn has_dictionary_types(&self) -> bool
pub fn is_default_storage(&self) -> bool
pub fn storage_class(&self) -> StorageClass
Sourcepub fn merge_with_reference(&self, other: &Field, reference: &Field) -> Field
pub fn merge_with_reference(&self, other: &Field, reference: &Field) -> Field
Merge a field with another field using a reference field to ensure the correct order of fields
For each child in the reference field we look for a matching child in self and other.
If we find a match in both we recursively merge the children. If we find a match in one but not the other we take the matching child.
Primitive fields we simply clone self and return.
Matches are determined using field names and so ids are not required.
pub fn apply_projection(&self, projection: &Projection) -> Option<Field>
pub fn explain_difference( &self, expected: &Field, options: &SchemaCompareOptions, ) -> Option<String>
pub fn compare_nullability( expected_nullability: bool, actual_nullability: bool, options: &SchemaCompareOptions, ) -> bool
pub fn compare_with_options( &self, expected: &Field, options: &SchemaCompareOptions, ) -> bool
pub fn extension_name(&self) -> Option<&str>
pub fn child(&self, name: &str) -> Option<&Field>
pub fn child_mut(&mut self, name: &str) -> Option<&mut Field>
Sourcepub fn set_dictionary_values(&mut self, arr: &Arc<dyn Array>)
pub fn set_dictionary_values(&mut self, arr: &Arc<dyn Array>)
Attach the Dictionary’s value array, so that we can later serialize the dictionary to the manifest.
pub fn set_dictionary(&mut self, arr: &Arc<dyn Array>)
pub fn sub_field(&self, path_components: &[&str]) -> Option<&Field>
pub fn sub_field_mut(&mut self, path_components: &[&str]) -> Option<&mut Field>
Sourcepub fn is_blob(&self) -> bool
pub fn is_blob(&self) -> bool
Check if the user has labeled the field as a blob
Blob fields will load descriptions by default
Sourcepub fn into_unloaded(self) -> Field
pub fn into_unloaded(self) -> Field
If the field is a blob, return a new field with the same name and id but with the data type set to a struct of the blob description fields.
If the field is not a blob, return the field itself.
pub fn project(&self, path_components: &[&str]) -> Result<Field, Error>
Sourcepub fn project_by_filter<F>(&self, filter: &F) -> Option<Field>
pub fn project_by_filter<F>(&self, filter: &F) -> Option<Field>
Create a new field by removing all fields that do not match the filter.
If a child field matches the filter then the parent will be kept even if it does not match the filter.
Returns None if the field itself does not match the filter.
Sourcepub fn project_by_field(
&self,
other: &Field,
on_type_mismatch: OnTypeMismatch,
) -> Result<Field, Error>
pub fn project_by_field( &self, other: &Field, on_type_mismatch: OnTypeMismatch, ) -> Result<Field, Error>
Project by a field.
Sourcepub fn intersection_ignore_types(&self, other: &Field) -> Result<Field, Error>
pub fn intersection_ignore_types(&self, other: &Field) -> Result<Field, Error>
Intersection of two Field
s, ignoring data types.
pub fn exclude(&self, other: &Field) -> Option<Field>
Sourcepub fn set_id(&mut self, parent_id: i32, id_seed: &mut i32)
pub fn set_id(&mut self, parent_id: i32, id_seed: &mut i32)
Recursively set field ID and parent ID for this field and all its children.
pub fn field_by_id_mut(&mut self, id: impl Into<i32>) -> Option<&mut Field>
pub fn field_by_id(&self, id: impl Into<i32>) -> Option<&Field>
pub fn is_packed_struct(&self) -> bool
Trait Implementations§
Source§impl DeepSizeOf for Field
impl DeepSizeOf for Field
Source§fn deep_size_of_children(&self, context: &mut Context) -> usize
fn deep_size_of_children(&self, context: &mut Context) -> usize
Source§fn deep_size_of(&self) -> usize
fn deep_size_of(&self) -> usize
impl StructuralPartialEq for Field
Auto Trait Implementations§
impl Freeze for Field
impl !RefUnwindSafe for Field
impl Send for Field
impl Sync for Field
impl Unpin for Field
impl !UnwindSafe for Field
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.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> 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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.