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§
Sourcefn extension_type_registration(
&self,
name: &str,
) -> Result<ExtensionTypeRegistrationRef>
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.
Sourcefn extension_type_registrations(&self) -> Vec<ExtensionTypeRegistrationRef> ⓘ
fn extension_type_registrations(&self) -> Vec<ExtensionTypeRegistrationRef> ⓘ
Returns all registered ExtensionTypeRegistration.
Sourcefn add_extension_type_registration(
&self,
extension_type: ExtensionTypeRegistrationRef,
) -> Result<Option<ExtensionTypeRegistrationRef>>
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.
Sourcefn remove_extension_type_registration(
&self,
name: &str,
) -> Result<Option<ExtensionTypeRegistrationRef>>
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§
Sourcefn create_extension_type_for_field(
&self,
field: &Field,
) -> Result<Option<DFExtensionTypeRef>>
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.
Sourcefn extend(&self, extension_types: &[ExtensionTypeRegistrationRef]) -> Result<()>
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".