pub struct BlockIndex {
pub entries: Vec<BlockIndexEntry>,
pub checksums_enabled: bool,
/* private fields */
}Expand description
In-memory representation of the trailing block index.
Internally maintains a cumulative_uncompressed table so that
BlockIndex::uncompressed_offset, BlockIndex::total_uncompressed_size,
and BlockIndex::block_for_offset answer in O(1) / O(log N) time regardless
of block count (Slice E).
Fields§
§entries: Vec<BlockIndexEntry>§checksums_enabled: boolImplementations§
Source§impl BlockIndex
impl BlockIndex
Sourcepub fn uncompressed_offset(&self, block_n: u64) -> u64
pub fn uncompressed_offset(&self, block_n: u64) -> u64
Returns the absolute byte offset within the original uncompressed stream
at which block n begins. O(1) indexed read.
Sourcepub fn block_for_offset(&self, uncompressed_offset: u64) -> Option<u64>
pub fn block_for_offset(&self, uncompressed_offset: u64) -> Option<u64>
Returns the block index containing the given uncompressed byte offset,
or None if the offset is beyond the end of the stream.
O(log N) binary search over the cumulative-offset table.
Sourcepub fn total_uncompressed_size(&self) -> u64
pub fn total_uncompressed_size(&self) -> u64
Total uncompressed size across all blocks. O(1).
Trait Implementations§
Source§impl Clone for BlockIndex
impl Clone for BlockIndex
Auto Trait Implementations§
impl Freeze for BlockIndex
impl RefUnwindSafe for BlockIndex
impl Send for BlockIndex
impl Sync for BlockIndex
impl Unpin for BlockIndex
impl UnsafeUnpin for BlockIndex
impl UnwindSafe for BlockIndex
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more