pub struct CompressibleChunkStorage<N, Compr>where
Compr: Compression,{ /* private fields */ }Expand description
A two-tier chunk storage. The first tier is an LRU cache of uncompressed chunks. The second tier is a Slab of compressed
chunks.
Implementations§
Source§impl<N, By, Chan> CompressibleChunkStorage<N, FastArrayCompression<N, FastChannelsCompression<By, Chan>>>where
PointN<N>: Copy,
ChunkKey<N>: Clone + Eq + Hash,
FastChannelsCompression<By, Chan>: Compression,
impl<N, By, Chan> CompressibleChunkStorage<N, FastArrayCompression<N, FastChannelsCompression<By, Chan>>>where
PointN<N>: Copy,
ChunkKey<N>: Clone + Eq + Hash,
FastChannelsCompression<By, Chan>: Compression,
pub fn with_bytes_compression( bytes_compression: By, ) -> CompressibleChunkStorage<N, FastArrayCompression<N, FastChannelsCompression<By, Chan>>>
Source§impl<N, Compr> CompressibleChunkStorage<N, Compr>where
Compr: Compression,
impl<N, Compr> CompressibleChunkStorage<N, Compr>where
Compr: Compression,
pub fn compression(&self) -> &Compr
Source§impl<N, Compr> CompressibleChunkStorage<N, Compr>
impl<N, Compr> CompressibleChunkStorage<N, Compr>
pub fn new(compression: Compr) -> CompressibleChunkStorage<N, Compr>
pub fn len_cached(&self) -> usize
pub fn len_compressed(&self) -> usize
Sourcepub fn reader<'a>(
&'a self,
local_cache: &'a LocalCache<ChunkKey<N>, <Compr as Compression>::Data, RandomState>,
) -> CompressibleChunkStorageReader<'a, N, Compr>
pub fn reader<'a>( &'a self, local_cache: &'a LocalCache<ChunkKey<N>, <Compr as Compression>::Data, RandomState>, ) -> CompressibleChunkStorageReader<'a, N, Compr>
Returns a reader that implements ChunkReadStorage.
Sourcepub fn copy_without_caching(
&self,
key: ChunkKey<N>,
) -> Option<MaybeCompressed<<Compr as Compression>::Data, Compressed<Compr>>>
pub fn copy_without_caching( &self, key: ChunkKey<N>, ) -> Option<MaybeCompressed<<Compr as Compression>::Data, Compressed<Compr>>>
Returns a copy of the Chunk at key.
WARNING: the cache will not be updated. This method should be used for a read-modify-write workflow where it would be inefficient to cache the chunk only for it to be overwritten by the modified version.
Sourcepub fn remove(
&mut self,
key: ChunkKey<N>,
) -> Option<MaybeCompressed<<Compr as Compression>::Data, Compressed<Compr>>>
pub fn remove( &mut self, key: ChunkKey<N>, ) -> Option<MaybeCompressed<<Compr as Compression>::Data, Compressed<Compr>>>
Remove the Chunk at key.
Sourcepub fn compress_lru(&mut self)
pub fn compress_lru(&mut self)
Compress the least-recently-used, cached chunk. On access, compressed chunks will be decompressed and cached.
Sourcepub fn remove_lru(
&mut self,
) -> Option<(ChunkKey<N>, <Compr as Compression>::Data)>
pub fn remove_lru( &mut self, ) -> Option<(ChunkKey<N>, <Compr as Compression>::Data)>
Remove the least-recently-used, cached chunk.
This is useful for removing a batch of chunks at a time before compressing them in parallel. Then call
insert_compressed.
Sourcepub fn insert_compressed(
&mut self,
key: ChunkKey<N>,
compressed_chunk: Compressed<Compr>,
) -> Option<MaybeCompressed<<Compr as Compression>::Data, Compressed<Compr>>>
pub fn insert_compressed( &mut self, key: ChunkKey<N>, compressed_chunk: Compressed<Compr>, ) -> Option<MaybeCompressed<<Compr as Compression>::Data, Compressed<Compr>>>
Insert a compressed chunk. Returns the old chunk if one exists.
Sourcepub fn flush_local_cache(
&mut self,
local_cache: LocalCache<ChunkKey<N>, <Compr as Compression>::Data, RandomState>,
)
pub fn flush_local_cache( &mut self, local_cache: LocalCache<ChunkKey<N>, <Compr as Compression>::Data, RandomState>, )
Consumes and flushes the chunk cache into the chunk map. This is not strictly necessary, but it will help with caching efficiency.
Sourcepub fn insert_chunk(
&mut self,
key: ChunkKey<N>,
chunk: <Compr as Compression>::Data,
) -> Option<MaybeCompressed<<Compr as Compression>::Data, Compressed<Compr>>>
pub fn insert_chunk( &mut self, key: ChunkKey<N>, chunk: <Compr as Compression>::Data, ) -> Option<MaybeCompressed<<Compr as Compression>::Data, Compressed<Compr>>>
Inserts chunk at key and returns the old chunk.
Trait Implementations§
Source§impl<N, Compr> ChunkWriteStorage<N, <Compr as Compression>::Data> for CompressibleChunkStorage<N, Compr>
impl<N, Compr> ChunkWriteStorage<N, <Compr as Compression>::Data> for CompressibleChunkStorage<N, Compr>
Source§fn get_mut(
&mut self,
key: ChunkKey<N>,
) -> Option<&mut <Compr as Compression>::Data>
fn get_mut( &mut self, key: ChunkKey<N>, ) -> Option<&mut <Compr as Compression>::Data>
key.Source§fn get_mut_or_insert_with(
&mut self,
key: ChunkKey<N>,
create_chunk: impl FnOnce() -> <Compr as Compression>::Data,
) -> &mut <Compr as Compression>::Data
fn get_mut_or_insert_with( &mut self, key: ChunkKey<N>, create_chunk: impl FnOnce() -> <Compr as Compression>::Data, ) -> &mut <Compr as Compression>::Data
key. If it doesn’t exist, insert the return value of create_chunk.Source§fn replace(
&mut self,
key: ChunkKey<N>,
chunk: <Compr as Compression>::Data,
) -> Option<<Compr as Compression>::Data>
fn replace( &mut self, key: ChunkKey<N>, chunk: <Compr as Compression>::Data, ) -> Option<<Compr as Compression>::Data>
key with chunk, returning the old value.Source§impl<N, Compr> IntoIterator for CompressibleChunkStorage<N, Compr>where
N: 'static,
Compr: 'static + Compression,
impl<N, Compr> IntoIterator for CompressibleChunkStorage<N, Compr>where
N: 'static,
Compr: 'static + Compression,
Source§type IntoIter = Box<dyn Iterator<Item = <CompressibleChunkStorage<N, Compr> as IntoIterator>::Item>>
type IntoIter = Box<dyn Iterator<Item = <CompressibleChunkStorage<N, Compr> as IntoIterator>::Item>>
Source§type Item = (ChunkKey<N>, <Compr as Compression>::Data)
type Item = (ChunkKey<N>, <Compr as Compression>::Data)
Source§fn into_iter(
self,
) -> <CompressibleChunkStorage<N, Compr> as IntoIterator>::IntoIter
fn into_iter( self, ) -> <CompressibleChunkStorage<N, Compr> as IntoIterator>::IntoIter
Source§impl<'a, N, Compr> IterChunkKeys<'a, N> for CompressibleChunkStorage<N, Compr>
impl<'a, N, Compr> IterChunkKeys<'a, N> for CompressibleChunkStorage<N, Compr>
type Iter = Keys<'a, ChunkKey<N>, CacheEntry<(<Compr as Compression>::Data, usize), CompressedLocation>>
fn chunk_keys( &'a self, ) -> <CompressibleChunkStorage<N, Compr> as IterChunkKeys<'a, N>>::Iter
Auto Trait Implementations§
impl<N, Compr> Freeze for CompressibleChunkStorage<N, Compr>where
Compr: Freeze,
impl<N, Compr> RefUnwindSafe for CompressibleChunkStorage<N, Compr>where
Compr: RefUnwindSafe,
<Compr as Compression>::CompressedData: RefUnwindSafe,
N: RefUnwindSafe,
<Compr as Compression>::Data: RefUnwindSafe,
impl<N, Compr> Send for CompressibleChunkStorage<N, Compr>where
Compr: Send,
<Compr as Compression>::CompressedData: Send,
N: Send,
<Compr as Compression>::Data: Send,
impl<N, Compr> Sync for CompressibleChunkStorage<N, Compr>where
Compr: Sync,
<Compr as Compression>::CompressedData: Sync,
N: Sync,
<Compr as Compression>::Data: Sync,
impl<N, Compr> Unpin for CompressibleChunkStorage<N, Compr>where
Compr: Unpin,
<Compr as Compression>::CompressedData: Unpin,
N: Unpin,
<Compr as Compression>::Data: Unpin,
impl<N, Compr> UnwindSafe for CompressibleChunkStorage<N, Compr>where
Compr: UnwindSafe,
N: UnwindSafe,
<Compr as Compression>::Data: UnwindSafe,
<Compr as Compression>::CompressedData: UnwindSafe,
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.