Trait DynExtHelpers

Source
pub trait DynExtHelpers<K = ()>: VirtualDynExtension<K>
where K: DiscriminantTag,
{ // Provided methods fn index_get( &self, index: usize, ) -> Option<<Self::TypesVia as VirtualDynExtensionSchema<K>>::Some> where <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some: Clone { ... } fn iter( &self, ) -> impl Iterator<Item = <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some> where <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some: Clone { ... } fn iter_mut<F>(&mut self, f: F) -> Result<(), ()> where F: FnMut(&mut <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some) { ... } fn index_set( &mut self, index: usize, v: <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some, ) -> Result<(), ()> where <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some: Default { ... } fn get( &self, ) -> Option<<Self::TypesVia as VirtualDynExtensionSchema<K>>::Some> { ... } fn set(&mut self, v: <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some) { ... } }
Expand description

Helper methods for accessing and mutating values in a VirtualDynExtension.

These helpers operate on dynamically shaped extensions with vector-like semantics:

  • collections may grow or shrink (within bounds)
  • indexing and iteration are supported
  • mutations may fail due to constraints

Structure and types are defined externally via VirtualDynExtensionSchema, while storage is handled by the container.

All operations are performed via tagged conversions.

§Default Discriminant

  • K = (): operates on a single default extension, meaning one dynamic extension is assumed.

Provided Methods§

Source

fn index_get( &self, index: usize, ) -> Option<<Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>

Returns the element at index from the extension interpreted as Many.

Source

fn iter( &self, ) -> impl Iterator<Item = <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>

Returns an iterator over elements.

Source

fn iter_mut<F>(&mut self, f: F) -> Result<(), ()>
where F: FnMut(&mut <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some),

Applies mutation over all elements.

Source

fn index_set( &mut self, index: usize, v: <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some, ) -> Result<(), ()>

Sets element at index.

Source

fn get(&self) -> Option<<Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>

Retrieves Some.

Source

fn set(&mut self, v: <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some)

Sets Some.

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<T, K> DynExtHelpers<K> for T

Blanket impl for all VirtualDynExtension types.

This trait is not intended to be implemented manually. It exists as an ergonomic replacement for free helper functions.

All methods have default implementations, making this forward-compatible: new helpers can be added without breaking existing code.