pub struct CascadeResolver2<T: Copy + Default + 'static> {
pub outer: SharedRegion<KTowerCascade<T, 1>>,
pub inner: SharedRegion<T>,
/* private fields */
}Expand description
Two-level cascade resolver: one inner SharedRegion holding T, one
outer SharedRegion of KTowerCascade<T, 1> slots that ref the
inner. Lookup walks: cascade.indices[0] -> outer_region slot ->
KTowerCascade<T, 1> -> cascade.indices[1] -> inner_region slot.
For larger DEPTHs, compose CascadeResolver2 and
CascadeResolver3 / CascadeResolver4 below or use
SharedRegion directly with custom traversal.
Fields§
§outer: SharedRegion<KTowerCascade<T, 1>>§inner: SharedRegion<T>Implementations§
Source§impl<T: Copy + Default + 'static> CascadeResolver2<T>
impl<T: Copy + Default + 'static> CascadeResolver2<T>
pub fn create( outer_path: impl AsRef<Path>, outer_capacity: usize, inner_path: impl AsRef<Path>, inner_capacity: usize, ) -> Result<Self, CascadeError>
pub fn open( outer_path: impl AsRef<Path>, outer_capacity: usize, inner_path: impl AsRef<Path>, inner_capacity: usize, ) -> Result<Self, CascadeError>
Sourcepub fn insert(
&self,
outer_idx: u32,
value: T,
) -> Result<KTowerCascade<T, 2>, CascadeError>
pub fn insert( &self, outer_idx: u32, value: T, ) -> Result<KTowerCascade<T, 2>, CascadeError>
Insert a T at a chosen cascade path. Allocates the inner slot
- any missing outer slot; returns the resolved cascade.
Sourcepub fn get(&self, c: KTowerCascade<T, 2>) -> Result<T, CascadeError>
pub fn get(&self, c: KTowerCascade<T, 2>) -> Result<T, CascadeError>
Resolve a 2-level cascade to its T value.
pub fn flush(&self) -> Result<(), CascadeError>
Trait Implementations§
Source§impl<T: Copy + Default + Send + Sync + 'static> AdaptiveInstance for CascadeResolver2<T>
impl<T: Copy + Default + Send + Sync + 'static> AdaptiveInstance for CascadeResolver2<T>
fn header(&self) -> &HandshakeHeader
fn ring(&self) -> &ObservationRing
fn make_policy(&self) -> Box<dyn Policy>
Source§fn apply_migration(&self, new_tag: u32)
fn apply_migration(&self, new_tag: u32)
Called by the sidecar when the policy returns a new strategy
tag. Default implementation: just set the tag on the header.
Primitives that need heavier migration (data-layout swap)
override this to perform the swap before (or after) updating
the tag.
Auto Trait Implementations§
impl<T> !Freeze for CascadeResolver2<T>
impl<T> !UnwindSafe for CascadeResolver2<T>
impl<T> RefUnwindSafe for CascadeResolver2<T>
impl<T> Send for CascadeResolver2<T>
impl<T> Sync for CascadeResolver2<T>
impl<T> Unpin for CascadeResolver2<T>
impl<T> UnsafeUnpin for CascadeResolver2<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