Trait DelegateVirtualDynExtension

Source
pub trait DelegateVirtualDynExtension<Provider, Discriminant = ()>: VirtualDynExtension<Discriminant>
where Provider: VirtualDynExtensionSchema<Discriminant>, Discriminant: DiscriminantTag, Self: Sized,
{ }
Expand description

Constraint for delegating a virtual extension to an external schema.

This trait ties a container to an externally provided VirtualDynExtensionSchema, without requiring the container to define the extension’s type or representation itself.

§Roles

  • Container (Self)

    • stores the extension representation
  • Schema (Provider)

    • defines the element type and representation
  • Caller

    • selects the extension via the Discriminant

§Representation

The delegated schema is dynamic:

  • Many has vector-like semantics
  • size and bounds are resolved at runtime (within limits)

§Default Discriminant

  • Discriminant = (): delegates a single default extension, meaning one dynamic extension is assumed.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<Provider, Discriminant, T> DelegateVirtualDynExtension<Provider, Discriminant> for T
where T: VirtualDynExtension<Discriminant> + Sized, Discriminant: DiscriminantTag, Provider: VirtualDynExtensionSchema<Discriminant>,

Blanket implementation enabling all types to delegate extension schema resolution.