Trait sanakirja::btree::BTreePage[][src]

pub trait BTreePage<K, V> where
    K: ?Sized,
    V: ?Sized
{ type Cursor: Clone + Copy + Debug;
Show 15 methods fn is_empty(c: &Self::Cursor) -> bool;
fn is_init(c: &Self::Cursor) -> bool;
fn cursor_before(p: &CowPage) -> Self::Cursor;
fn cursor_after(p: &CowPage) -> Self::Cursor;
fn move_next(c: &mut Self::Cursor) -> bool;
fn move_prev(c: &mut Self::Cursor) -> bool;
fn current<T>(
        txn: &T,
        p: Page<'a>,
        c: &Self::Cursor
    ) -> Option<(&'a K, &'a V, u64)>
    where
        T: LoadPage
;
fn left_child(p: Page<'_>, c: &Self::Cursor) -> u64;
fn right_child(p: Page<'_>, c: &Self::Cursor) -> u64;
fn set_cursor<T>(
        txn: &'a T,
        page: Page<'_>,
        c: &mut Self::Cursor,
        k0: &K,
        v0: Option<&V>
    ) -> Result<(&'a K, &'a V, u64), usize>
    where
        T: LoadPage
;
fn split_at(c: &Self::Cursor) -> (Self::Cursor, Self::Cursor); fn cursor_first(p: &CowPage) -> Self::Cursor { ... }
fn cursor_last(p: &CowPage) -> Self::Cursor { ... }
fn next<T>(
        txn: &T,
        p: Page<'b>,
        c: &mut Self::Cursor
    ) -> Option<(&'b K, &'b V, u64)>
    where
        T: LoadPage
, { ... }
fn prev<T>(
        txn: &T,
        p: Page<'b>,
        c: &mut Self::Cursor
    ) -> Option<(&'b K, &'b V, u64)>
    where
        T: LoadPage
, { ... }
}

Associated Types

Required methods

Whether this cursor is at the end of the page.

Whether this cursor is strictly before the first element.

Returns a cursor set before the first element of the page (i.e. set to -1).

Returns a cursor set after the last element of the page (i.e. to element n)

Move the cursor to the next position. Returns whether the cursor was actually moved (i.e. true if and only if the cursor isn’t already after the last element).

Move the cursor to the previous position. Returns whether the cursor was actually moved (i.e. true if and only if the cursor isn’t strictly before the page).

Returns the current element, if the cursor is pointing at one.

Returns the left child of the entry pointed to by the cursor.

Returns the right child of the entry pointed to by the cursor.

Sets the cursor to the last element less than or equal to k0 if v0.is_none(), and to (k0, v0) if v0.is_some(). If a match is found (on k0 only if v0.is_none(), on (k0, v0) else), return the match along with the right child.

Else (in the Err case of the Result), return the position at which (k0, v0) can be inserted.

Splits the cursor into two cursors: the elements strictly before the current position, and the elements greater than or equal the current element.

Provided methods

Returns a cursor set to the first element of the page (i.e. 0). If the page is empty, the returned cursor might be empty.

Returns a cursor set to the last element of the page. If the cursor is empty, this is the same as cursor_before.

Return the element currently pointed to by the cursor (if the cursor is not before or after the elements of the page), and move the cursor to the next element.

Move the cursor to the previous element, and return that element. Note that this is not the symmetric of next.

Implementors