Skip to main content

ExtensionTypeRegistry

Trait ExtensionTypeRegistry 

Source
pub trait ExtensionTypeRegistry:
    Debug
    + Send
    + Sync {
    // Required methods
    fn extension_type_registration(
        &self,
        name: &str,
    ) -> Result<ExtensionTypeRegistrationRef>;
    fn extension_type_registrations(&self) -> Vec<ExtensionTypeRegistrationRef> ;
    fn add_extension_type_registration(
        &self,
        extension_type: ExtensionTypeRegistrationRef,
    ) -> Result<Option<ExtensionTypeRegistrationRef>>;
    fn remove_extension_type_registration(
        &self,
        name: &str,
    ) -> Result<Option<ExtensionTypeRegistrationRef>>;

    // Provided methods
    fn create_extension_type_for_field(
        &self,
        field: &Field,
    ) -> Result<Option<DFExtensionTypeRef>> { ... }
    fn extend(
        &self,
        extension_types: &[ExtensionTypeRegistrationRef],
    ) -> Result<()> { ... }
}
Expand description

Manages ExtensionTypeRegistrations, which allow users to register custom behavior for extension types.

Each registration is connected to the extension type name, which can also be looked up to get the registration.

Required Methods§

Source

fn extension_type_registration( &self, name: &str, ) -> Result<ExtensionTypeRegistrationRef>

Returns a reference to registration of an extension type named name.

Returns an error if there is no extension type with that name.

Source

fn extension_type_registrations(&self) -> Vec<ExtensionTypeRegistrationRef>

Returns all registered ExtensionTypeRegistration.

Source

fn add_extension_type_registration( &self, extension_type: ExtensionTypeRegistrationRef, ) -> Result<Option<ExtensionTypeRegistrationRef>>

Registers a new ExtensionTypeRegistrationRef, returning any previously registered implementation.

Returns an error if the type cannot be registered, for example, if the registry is read-only.

Source

fn remove_extension_type_registration( &self, name: &str, ) -> Result<Option<ExtensionTypeRegistrationRef>>

Deregisters an extension type registration with the name name, returning the implementation that was deregistered.

Returns an error if the type cannot be deregistered, for example, if the registry is read-only.

Provided Methods§

Source

fn create_extension_type_for_field( &self, field: &Field, ) -> Result<Option<DFExtensionTypeRef>>

Creates a DFExtensionTypeRef from the type information in the field.

The result Ok(None) indicates that there is no extension type metadata. Returns an error if the extension type in the metadata is not found.

Source

fn extend(&self, extension_types: &[ExtensionTypeRegistrationRef]) -> Result<()>

Extends the registry with the provided extension types.

Returns an error if the type cannot be registered, for example, if the registry is read-only.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§