pub struct OffsetsVector { /* private fields */ }Expand description
Compact vector of offsets
Stores offsets using a compact representation.
Implementations§
Source§impl OffsetsVector
impl OffsetsVector
Sourcepub fn decode(&self, absolute_offset: u64) -> DecodedOffset
pub fn decode(&self, absolute_offset: u64) -> DecodedOffset
Decode an offset (currently identity since we don’t compress yet)
Sourcepub fn locate(&self, pos: u64) -> Option<(u64, u64)>
pub fn locate(&self, pos: u64) -> Option<(u64, u64)>
Binary search to find which string contains a given absolute position.
Returns (string_id, string_begin) where offsets[string_id] <= pos < offsets[string_id + 1].
This matches the C++ decoded_offsets::offset_to_id / Elias-Fano locate approach.
Trait Implementations§
Source§impl AlignHash for OffsetsVector
impl AlignHash for OffsetsVector
Source§fn align_hash(hasher: &mut impl Hasher, offset_of: &mut usize)
fn align_hash(hasher: &mut impl Hasher, offset_of: &mut usize)
Accumulates alignment information in
hasher assuming to be positioned
at offset_of.Source§fn align_hash_val(&self, hasher: &mut impl Hasher, offset_of: &mut usize)
fn align_hash_val(&self, hasher: &mut impl Hasher, offset_of: &mut usize)
Calls
AlignHash::align_hash on a value.Source§impl Clone for OffsetsVector
impl Clone for OffsetsVector
Source§fn clone(&self) -> OffsetsVector
fn clone(&self) -> OffsetsVector
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for OffsetsVector
impl Debug for OffsetsVector
Source§impl Default for OffsetsVector
impl Default for OffsetsVector
Source§impl DeserInner for OffsetsVector
impl DeserInner for OffsetsVector
Source§type DeserType<'__epserde_desertype> = OffsetsVector
type DeserType<'__epserde_desertype> = OffsetsVector
The deserialization type associated with this type. It can be retrieved
conveniently with the alias
DeserType.Source§unsafe fn _deser_full_inner(
backend: &mut impl ReadWithPos,
) -> Result<Self, Error>
unsafe fn _deser_full_inner( backend: &mut impl ReadWithPos, ) -> Result<Self, Error>
Safety Read more
Source§unsafe fn _deser_eps_inner<'deser_eps_inner_lifetime>(
backend: &mut SliceWithPos<'deser_eps_inner_lifetime>,
) -> Result<Self::DeserType<'deser_eps_inner_lifetime>, Error>
unsafe fn _deser_eps_inner<'deser_eps_inner_lifetime>( backend: &mut SliceWithPos<'deser_eps_inner_lifetime>, ) -> Result<Self::DeserType<'deser_eps_inner_lifetime>, Error>
Safety Read more
Source§impl SerInner for OffsetsVector
impl SerInner for OffsetsVector
Source§const IS_ZERO_COPY: bool
const IS_ZERO_COPY: bool
Inner constant used by the derive macros to keep
track recursively of whether the type
satisfies the conditions for being zero-copy. It is checked
at runtime against the trait implemented by the type, and
if a
ZeroCopy type has this constant set to false
serialization will panic.Source§type SerType = OffsetsVector
type SerType = OffsetsVector
This is the type that will be written in the header of the file, and
thus the type that will be deserialized. In most cases it is
Self, but
in some cases, as for references to slices,
it is customized.Source§unsafe fn _ser_inner(&self, backend: &mut impl WriteWithNames) -> Result<()>
unsafe fn _ser_inner(&self, backend: &mut impl WriteWithNames) -> Result<()>
Serializes this structure using the given backend. Read more
Auto Trait Implementations§
impl Freeze for OffsetsVector
impl RefUnwindSafe for OffsetsVector
impl Send for OffsetsVector
impl Sync for OffsetsVector
impl Unpin for OffsetsVector
impl UnsafeUnpin for OffsetsVector
impl UnwindSafe for OffsetsVector
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, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Deserialize for T
impl<T> Deserialize for T
Source§unsafe fn deserialize_full(backend: &mut impl ReadNoStd) -> Result<T, Error>
unsafe fn deserialize_full(backend: &mut impl ReadNoStd) -> Result<T, Error>
§Safety
See the documentation of Deserialize.
Source§unsafe fn deserialize_eps(
backend: &[u8],
) -> Result<<T as DeserInner>::DeserType<'_>, Error>
unsafe fn deserialize_eps( backend: &[u8], ) -> Result<<T as DeserInner>::DeserType<'_>, Error>
§Safety
See the documentation of Deserialize.
Source§unsafe fn load_full(path: impl AsRef<Path>) -> Result<Self, Error>
unsafe fn load_full(path: impl AsRef<Path>) -> Result<Self, Error>
Convenience method to fully deserialize from a file. Read more
Source§unsafe fn read_mmap(
read: impl ReadNoStd,
size: usize,
flags: Flags,
) -> Result<MemCase<Self>, Error>
unsafe fn read_mmap( read: impl ReadNoStd, size: usize, flags: Flags, ) -> Result<MemCase<Self>, Error>
Source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
Source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Truncate the current UnsignedInt to a possibly smaller size
Source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Serialize for T
impl<T> Serialize for T
Source§unsafe fn ser_on_field_write(
&self,
backend: &mut impl WriteWithNames,
) -> Result<(), Error>
unsafe fn ser_on_field_write( &self, backend: &mut impl WriteWithNames, ) -> Result<(), Error>
Serializes the type using the given
WriteWithNames. Read moreSource§unsafe fn serialize(
&self,
backend: &mut impl WriteNoStd,
) -> Result<usize, Error>
unsafe fn serialize( &self, backend: &mut impl WriteNoStd, ) -> Result<usize, Error>
Serializes the type using the given backend. Read more
Source§unsafe fn serialize_with_schema(
&self,
backend: &mut impl WriteNoStd,
) -> Result<Schema, Error>
unsafe fn serialize_with_schema( &self, backend: &mut impl WriteNoStd, ) -> Result<Schema, Error>
Source§impl<T> UpcastableFrom<T> for T
impl<T> UpcastableFrom<T> for T
Source§fn upcast_from(value: T) -> T
fn upcast_from(value: T) -> T
Extend the current UnsignedInt to a possibly bigger size.