Trait generational_box::AnyStorage
source · pub trait AnyStorage: Default {
type Ref<T: ?Sized + 'static>: Deref<Target = T> + 'static;
type Mut<T: ?Sized + 'static>: DerefMut<Target = T> + 'static;
// Required methods
fn try_map_mut<T: ?Sized, U: ?Sized + 'static>(
mut_ref: Self::Mut<T>,
f: impl FnOnce(&mut T) -> Option<&mut U>
) -> Option<Self::Mut<U>>;
fn try_map<T: ?Sized, U: ?Sized + 'static>(
ref_: Self::Ref<T>,
f: impl FnOnce(&T) -> Option<&U>
) -> Option<Self::Ref<U>>;
fn data_ptr(&self) -> *const ();
fn manually_drop(&self) -> bool;
fn recycle(location: &MemoryLocation<Self>);
fn claim() -> MemoryLocation<Self>;
// Provided methods
fn map_mut<T: ?Sized, U: ?Sized + 'static>(
mut_ref: Self::Mut<T>,
f: impl FnOnce(&mut T) -> &mut U
) -> Self::Mut<U> { ... }
fn map<T: ?Sized, U: ?Sized + 'static>(
ref_: Self::Ref<T>,
f: impl FnOnce(&T) -> &U
) -> Self::Ref<U> { ... }
fn owner() -> Owner<Self> { ... }
}Expand description
A trait for any storage backing type.
Required Associated Types§
Required Methods§
sourcefn try_map_mut<T: ?Sized, U: ?Sized + 'static>(
mut_ref: Self::Mut<T>,
f: impl FnOnce(&mut T) -> Option<&mut U>
) -> Option<Self::Mut<U>>
fn try_map_mut<T: ?Sized, U: ?Sized + 'static>( mut_ref: Self::Mut<T>, f: impl FnOnce(&mut T) -> Option<&mut U> ) -> Option<Self::Mut<U>>
Try to map the mutable ref.
sourcefn try_map<T: ?Sized, U: ?Sized + 'static>(
ref_: Self::Ref<T>,
f: impl FnOnce(&T) -> Option<&U>
) -> Option<Self::Ref<U>>
fn try_map<T: ?Sized, U: ?Sized + 'static>( ref_: Self::Ref<T>, f: impl FnOnce(&T) -> Option<&U> ) -> Option<Self::Ref<U>>
Try to map the ref.
sourcefn data_ptr(&self) -> *const ()
fn data_ptr(&self) -> *const ()
Get the data pointer. No guarantees are made about the data pointer. It should only be used for debugging.
sourcefn manually_drop(&self) -> bool
fn manually_drop(&self) -> bool
Drop the value from the storage. This will return true if the value was taken.
sourcefn recycle(location: &MemoryLocation<Self>)
fn recycle(location: &MemoryLocation<Self>)
Recycle a memory location. This will drop the memory location and return it to the runtime.
sourcefn claim() -> MemoryLocation<Self>
fn claim() -> MemoryLocation<Self>
Claim a new memory location. This will either create a new memory location or recycle an old one.
Provided Methods§
sourcefn map_mut<T: ?Sized, U: ?Sized + 'static>(
mut_ref: Self::Mut<T>,
f: impl FnOnce(&mut T) -> &mut U
) -> Self::Mut<U>
fn map_mut<T: ?Sized, U: ?Sized + 'static>( mut_ref: Self::Mut<T>, f: impl FnOnce(&mut T) -> &mut U ) -> Self::Mut<U>
Map the mutable ref.
Object Safety§
This trait is not object safe.