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§
Sourcefn index_get(
&self,
index: usize,
) -> Option<<Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>
fn index_get( &self, index: usize, ) -> Option<<Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>
Returns the element at index from the extension interpreted as Many.
Sourcefn iter(
&self,
) -> impl Iterator<Item = <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>
fn iter( &self, ) -> impl Iterator<Item = <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>
Returns an iterator over elements.
Sourcefn index_set(
&mut self,
index: usize,
v: <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some,
) -> Result<(), ()>
fn index_set( &mut self, index: usize, v: <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some, ) -> Result<(), ()>
Sets element at index.
Sourcefn get(&self) -> Option<<Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>
fn get(&self) -> Option<<Self::TypesVia as VirtualDynExtensionSchema<K>>::Some>
Retrieves Some.
Sourcefn set(&mut self, v: <Self::TypesVia as VirtualDynExtensionSchema<K>>::Some)
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§
impl<T, K> DynExtHelpers<K> for Twhere
T: VirtualDynExtension<K>,
K: DiscriminantTag,
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.