pub enum InitializationStrategy<T> {
Lazy,
Eager {
initializer: Box<dyn Fn() -> T + Send + Sync>,
},
Custom {
initializer: Box<dyn Fn() -> T + Send + Sync>,
reset: Option<Box<dyn Fn(&mut T) + Send + Sync>>,
},
}Expand description
Strategy for initializing objects in a memory pool.
§Examples
use fastalloc::InitializationStrategy;
// Lazy initialization (default)
let strategy = InitializationStrategy::<i32>::Lazy;
// Eager initialization with a default value
let strategy = InitializationStrategy::Eager {
initializer: Box::new(|| 42),
};
// Custom initialization with reset callback
let strategy = InitializationStrategy::Custom {
initializer: Box::new(|| vec![1, 2, 3]),
reset: Some(Box::new(|v| v.clear())),
};Variants§
Lazy
Initialize objects only when first allocated (lazy).
Eager
Initialize all objects eagerly when pool is created.
Custom
Custom initialization with optional reset function.
Implementations§
Source§impl<T> InitializationStrategy<T>
impl<T> InitializationStrategy<T>
Sourcepub fn eager(initializer: impl Fn() -> T + Send + Sync + 'static) -> Self
pub fn eager(initializer: impl Fn() -> T + Send + Sync + 'static) -> Self
Creates an eager initialization strategy with the given initializer.
Sourcepub fn custom(
initializer: impl Fn() -> T + Send + Sync + 'static,
reset: impl Fn(&mut T) + Send + Sync + 'static,
) -> Self
pub fn custom( initializer: impl Fn() -> T + Send + Sync + 'static, reset: impl Fn(&mut T) + Send + Sync + 'static, ) -> Self
Creates a custom initialization strategy with both initializer and reset function.
Sourcepub fn custom_init_only(
initializer: impl Fn() -> T + Send + Sync + 'static,
) -> Self
pub fn custom_init_only( initializer: impl Fn() -> T + Send + Sync + 'static, ) -> Self
Creates a custom initialization strategy with only an initializer.
Sourcepub fn initialize(&self) -> Option<T>
pub fn initialize(&self) -> Option<T>
Creates an initial value if an initializer is available.
Trait Implementations§
Source§impl<T> Debug for InitializationStrategy<T>
impl<T> Debug for InitializationStrategy<T>
Auto Trait Implementations§
impl<T> Freeze for InitializationStrategy<T>
impl<T> !RefUnwindSafe for InitializationStrategy<T>
impl<T> Send for InitializationStrategy<T>
impl<T> Sync for InitializationStrategy<T>
impl<T> Unpin for InitializationStrategy<T>
impl<T> !UnwindSafe for InitializationStrategy<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more