Skip to main content

ExtensionTypeRegistration

Struct ExtensionTypeRegistration 

Source
pub struct ExtensionTypeRegistration { /* private fields */ }
Expand description

The registration of an extension type. Implementations of this trait are responsible for creating instances of DFExtensionType that represent the entire semantics of an extension type.

§Why do we need a Registration?

A good question is why this trait is even necessary. Why not directly register the DFExtensionType in a registry?

While this works for extension types requiring no additional metadata (e.g., arrow.uuid), it does not work for more complex extension types with metadata. For example, consider an extension type custom.shortened(n) that aims to short the pretty-printing string to n characters. Here, n is a parameter of the extension type and should be a field in the struct that implements the DFExtensionType. The job of the registration is to read the metadata from the field and create the corresponding DFExtensionType instance with the correct n set.

Implementations§

Source§

impl ExtensionTypeRegistration

Source

pub fn new_arc( name: impl Into<String>, factory: impl Fn(&DataType, Option<&str>) -> Result<DFExtensionTypeRef> + Send + Sync + 'static, ) -> ExtensionTypeRegistrationRef

Creates a new registration for an extension type. The factory is required to validate that the storage DataType is compatible with the extension type.

Source§

impl ExtensionTypeRegistration

Source

pub fn type_name(&self) -> &str

The name of the extension type.

This name will be used to find the correct ExtensionTypeRegistration when an extension type is encountered.

Source

pub fn create_df_extension_type( &self, storage_type: &DataType, metadata: Option<&str>, ) -> Result<DFExtensionTypeRef>

Creates an extension type instance from the optional metadata. The name of the extension type is not a parameter as it’s already defined by the registration itself.

Trait Implementations§

Source§

impl Debug for ExtensionTypeRegistration

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.