pub struct SharedHandleTable<T: Copy + 'static> { /* private fields */ }Implementations§
Sourcepub fn create(
path: impl AsRef<Path>,
capacity: usize,
) -> Result<Self, HandleTableError>
pub fn create( path: impl AsRef<Path>, capacity: usize, ) -> Result<Self, HandleTableError>
Obtain the table at path, initializing an empty one if the
path does not yet exist and attaching to it if it does.
Attaching leaves live handles and the free list in place; a
region built with a different capacity or payload type is a
LayoutMismatch. reset reinitializes.
Sourcepub fn reset(
path: impl AsRef<Path>,
capacity: usize,
) -> Result<Self, HandleTableError>
pub fn reset( path: impl AsRef<Path>, capacity: usize, ) -> Result<Self, HandleTableError>
Truncate the table at path and initialize an empty one,
invalidating every handle a live peer holds. For a caller that
knows it owns the path.
pub fn open( path: impl AsRef<Path>, expected_capacity: usize, ) -> Result<Self, HandleTableError>
pub fn capacity(&self) -> usize
pub fn header(&self) -> &HandleHeader
Sourcepub fn insert(&self, value: T) -> Result<Handle, HandleTableError>
pub fn insert(&self, value: T) -> Result<Handle, HandleTableError>
Insert value, returning a Handle. Errors with Full when
the slot table is exhausted.
Sourcepub fn get(&self, h: Handle) -> Option<T>
pub fn get(&self, h: Handle) -> Option<T>
Look up by handle. Returns None when the handle is stale
(generation mismatch) or the slot is currently vacant.
Sourcepub fn remove(&self, h: Handle) -> Option<T>
pub fn remove(&self, h: Handle) -> Option<T>
Remove the value at handle. Returns the value if live,
None if stale or already removed.
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
Sourcepub fn flush_async(&self) -> Result<(), HandleTableError>
pub fn flush_async(&self) -> Result<(), HandleTableError>
Non-blocking flush: schedules a writeback via the OS. Note: Windows is only partially async (sync to page cache, not to disk).