Skip to main content

Postings

Struct Postings 

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

A posting list held in RAM: elements sorted by record id, unique ids, every element carrying its tail_max ceiling (see the module docs).

Implementations§

Source§

impl Postings

Source

pub fn new() -> Self

An empty list.

Source

pub fn from_pairs<I>(pairs: I) -> Self
where I: IntoIterator<Item = (RecordId, Weight)>,

Build from (id, weight) pairs in any order. Later pairs win over earlier ones with the same id.

Source

pub fn from_sorted_pairs(pairs: &[(RecordId, Weight)]) -> Self

Build from pairs already sorted by strictly increasing id. Panics in debug builds if the order is violated.

Source

pub fn as_slice(&self) -> &[Posting]

The elements, sorted by id.

Source

pub fn len(&self) -> usize

Source

pub fn is_empty(&self) -> bool

Source

pub fn cursor(&self) -> SliceCursor<'_>

A cursor at the start of the list.

Source

pub fn get(&self, id: RecordId) -> Option<Weight>

Weight of id, if present.

Source

pub fn upsert(&mut self, id: RecordId, weight: Weight) -> Option<Weight>

Insert id with weight, or replace its weight if it is already present. Returns the previous weight when replacing.

Appending an id above every existing one costs O(1) unless the new weight raises existing ceilings, and then only the raised prefix is rewritten: inserting a corpus in id order is amortised O(1) per element for weights without a rising trend.

Source

pub fn delete(&mut self, id: RecordId) -> Option<Weight>

Remove id. Returns its weight if it was present.

Source

pub fn recompute_tail_max(&mut self)

Recompute every ceiling from scratch (after bulk edits through items_mut).

Source

pub fn items_mut(&mut self) -> &mut Vec<Posting>

Mutable access to the raw elements for bulk edits. The caller must keep ids sorted and unique, and call recompute_tail_max afterwards.

Source

pub fn check_invariants(&self) -> Result<(), String>

Check the structural invariants: ids strictly increasing, and every tail_max equal to the maximum weight of its inclusive suffix. Returns a description of the first violation.

Trait Implementations§

Source§

impl Clone for Postings

Source§

fn clone(&self) -> Postings

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 Debug for Postings

Source§

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

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

impl Default for Postings

Source§

fn default() -> Postings

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

impl PartialEq for Postings

Source§

fn eq(&self, other: &Postings) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Postings

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