Skip to main content

OffsetsVector

Struct OffsetsVector 

Source
pub struct OffsetsVector { /* private fields */ }
Expand description

Compact vector of offsets

Stores offsets using a compact representation.

Implementations§

Source§

impl OffsetsVector

Source

pub fn new() -> Self

Create a new empty offsets vector

Source

pub fn push(&mut self, offset: u64)

Add an offset to the vector

Source

pub fn access(&self, i: usize) -> u64

Get the offset at index i

Source

pub fn decode(&self, absolute_offset: u64) -> DecodedOffset

Decode an offset (currently identity since we don’t compress yet)

Source

pub fn len(&self) -> usize

Get the number of offsets

Source

pub fn is_empty(&self) -> bool

Check if the vector is empty

Source

pub fn num_bytes(&self) -> u64

Get the number of bytes used (approximation for MVP)

Source

pub fn num_bits(&self) -> u64

Get the number of bits used (approximation for MVP)

Source

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.

Source

pub fn locate_branchless(&self, pos: u64) -> Option<(u64, u64)>

Branchless binary search variant for benchmarking comparison.

Uses conditional moves instead of branches to avoid branch mispredictions. The inner loop has no data-dependent branches - only a CMOV.

Trait Implementations§

Source§

impl AlignHash for OffsetsVector
where Vec<u64>: SerInner<SerType: AlignHash>,

Source§

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)

Calls AlignHash::align_hash on a value.
Source§

impl Clone for OffsetsVector

Source§

fn clone(&self) -> OffsetsVector

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl CopyType for OffsetsVector

Source§

impl Debug for OffsetsVector

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for OffsetsVector

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl DeserInner for OffsetsVector
where Vec<u64>: DeserInner,

Source§

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>

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>

Safety Read more
Source§

impl SerInner for OffsetsVector
where Vec<u64>: SerInner,

Source§

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

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<()>

Serializes this structure using the given backend. Read more
Source§

impl TypeHash for OffsetsVector
where Vec<u64>: SerInner<SerType: TypeHash>,

Source§

fn type_hash(hasher: &mut impl Hasher)

Accumulates type information in hasher.
Source§

fn type_hash_val(&self, hasher: &mut impl Hasher)

Calls TypeHash::type_hash on a value.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CastableFrom<T> for T

Source§

fn cast_from(value: T) -> T

Call Self as W
Source§

impl<T, U> CastableInto<U> for T
where U: CastableFrom<T>,

Source§

fn cast(self) -> U

Call W::cast_from(self)
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Deserialize for T

Source§

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>

§Safety

See the documentation of Deserialize.

Source§

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_mem( read: impl ReadNoStd, size: usize, ) -> Result<MemCase<Self>, Error>

Reads data from a reader into heap-allocated memory and ε-deserialize a data structure from it, returning a MemCase containing the data structure and the memory. Excess bytes are zeroed out. Read more
Source§

unsafe fn load_mem(path: impl AsRef<Path>) -> Result<MemCase<Self>, Error>

Loads a file into heap-allocated memory and ε-deserialize a data structure from it, returning a MemCase containing the data structure and the memory. Excess bytes are zeroed out. Read more
Source§

unsafe fn read_mmap( read: impl ReadNoStd, size: usize, flags: Flags, ) -> Result<MemCase<Self>, Error>

Reads data from a reader into mmap()-allocated memory and ε-deserialize a data structure from it, returning a MemCase containing the data structure and the memory. Excess bytes are zeroed out. Read more
Source§

unsafe fn load_mmap( path: impl AsRef<Path>, flags: Flags, ) -> Result<MemCase<Self>, Error>

Loads a file into mmap()-allocated memory and ε-deserialize a data structure from it, returning a MemCase containing the data structure and the memory. Excess bytes are zeroed out. Read more
Source§

unsafe fn mmap( path: impl AsRef<Path>, flags: Flags, ) -> Result<MemCase<Self>, Error>

Memory maps a file and ε-deserializes a data structure from it, returning a MemCase containing the data structure and the memory mapping. Read more
Source§

impl<T> DowncastableFrom<T> for T

Source§

fn downcast_from(value: T) -> T

Truncate the current UnsignedInt to a possibly smaller size
Source§

impl<T, U> DowncastableInto<U> for T
where U: DowncastableFrom<T>,

Source§

fn downcast(self) -> U

Call W::downcast_from(self)
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Serialize for T

Source§

unsafe fn ser_on_field_write( &self, backend: &mut impl WriteWithNames, ) -> Result<(), Error>

Serializes the type using the given WriteWithNames. Read more
Source§

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>

Serializes the type using the given backend and return a schema describing the data that has been written. Read more
Source§

unsafe fn store(&self, path: impl AsRef<Path>) -> Result<(), Error>

Convenience method to serialize to a file. Read more
Source§

impl<T> Splat<T> for T

Source§

fn splat(value: T) -> T

Source§

impl<T> To<T> for T

Source§

fn to(self) -> T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UpcastableFrom<T> for T

Source§

fn upcast_from(value: T) -> T

Extend the current UnsignedInt to a possibly bigger size.
Source§

impl<T, U> UpcastableInto<U> for T
where U: UpcastableFrom<T>,

Source§

fn upcast(self) -> U

Call W::upcast_from(self)
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeepCopy for T
where T: CopyType<Copy = Deep> + SerInner, <T as SerInner>::SerType: TypeHash + AlignHash,