Skip to main content

OrdinalTable

Struct OrdinalTable 

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

The live store’s ordinal space: a sorted base, then arrivals appended. Owned; Self::view is the lookup. See the module header for why it is append-only.

Implementations§

Source§

impl OrdinalTable

Source

pub fn empty(oid_len: usize) -> Self

Source

pub fn from_sorted(raw: Vec<u8>, oid_len: usize) -> Self

A fresh table over a sorted full oid list: base only, nothing appended.

Source

pub fn from_parts( full_sorted: &[u8], extra: &[u8], oid_len: usize, ) -> Option<Self>

The persisted form, replayed: full_sorted is the store’s current sorted oid list and extra the appended part in arrival order. The base is full − extra. None when the two do not agree (an oid in extra that the store no longer holds, or a width mismatch) — rebuild from scratch.

Source

pub fn from_base_and_extra( base: Vec<u8>, extra: Vec<u8>, oid_len: usize, ) -> Option<Self>

The persisted form, replayed from the two raw parts: base must be sorted and distinct (the binary search rests on it), extra distinct and disjoint from it. None otherwise — a malformed file is a rebuild, never a wrong ordinal.

Source

pub fn base_raw(&self) -> &[u8] ⓘ

The sorted base, raw — what the persisted form stores.

Source

pub fn len(&self) -> usize

Source

pub fn is_empty(&self) -> bool

Source

pub fn oid_len(&self) -> usize

Source

pub fn base_len(&self) -> usize

Source

pub fn extra_len(&self) -> usize

How many ordinals were appended behind the sorted base.

Source

pub fn extra_raw(&self) -> &[u8] ⓘ

The appended part, arrival order — what the persisted form stores.

Source

pub fn view(&self) -> OrdinalSpace<'_>

Source

pub fn follow(&mut self, full_sorted: &[u8]) -> Option<Range<u32>>

Follow the store: full_sorted is every oid the store holds now, in sorted order. Every oid in it that this table does not number is appended (in sorted order among themselves, after everything already numbered) and the range of new ordinals is returned. None when an oid the table numbers is absent from full_sorted — something was removed under the table (a gc, a retain) and the numbering cannot be kept; the caller rebuilds from scratch.

Source

pub fn remap_to(&self, target: &OrdinalSpace<'_>) -> Vec<u32>

old ordinal → ordinal in target, as one table, for a seal or a compaction. NONE where target lacks the oid. O(n) lookups through the target’s fanout, once — not once per set bit.

Trait Implementations§

Source§

impl Clone for OrdinalTable

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Default for OrdinalTable

Source§

fn default() -> Self

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

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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