Trait sanakirja_core::btree::BTreePage[][src]

pub trait BTreePage<K: ?Sized, V: ?Sized>: Sized {
    type Cursor: Clone + Copy + Debug;
    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<'a, T: LoadPage>(
        txn: &T,
        p: Page<'a>,
        c: &Self::Cursor
    ) -> Option<(&'a K, &'a V, u64)>;
fn left_child(p: Page<'_>, c: &Self::Cursor) -> u64;
fn right_child(p: Page<'_>, c: &Self::Cursor) -> u64;
fn set_cursor<'a, T: LoadPage>(
        txn: &'a T,
        page: Page<'_>,
        c: &mut Self::Cursor,
        k0: &K,
        v0: Option<&V>
    ) -> Result<(&'a K, &'a V, u64), usize>;
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<'b, T: LoadPage>(
        txn: &T,
        p: Page<'b>,
        c: &mut Self::Cursor
    ) -> Option<(&'b K, &'b V, u64)> { ... }
fn prev<'b, T: LoadPage>(
        txn: &T,
        p: Page<'b>,
        c: &mut Self::Cursor
    ) -> Option<(&'b K, &'b V, u64)> { ... } }

Associated Types

Loading content...

Required methods

fn is_empty(c: &Self::Cursor) -> bool[src]

Whether this cursor is at the end of the page.

fn is_init(c: &Self::Cursor) -> bool[src]

Whether this cursor is strictly before the first element.

fn cursor_before(p: &CowPage) -> Self::Cursor[src]

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

fn cursor_after(p: &CowPage) -> Self::Cursor[src]

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

fn move_next(c: &mut Self::Cursor) -> bool[src]

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

fn move_prev(c: &mut Self::Cursor) -> bool[src]

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

fn current<'a, T: LoadPage>(
    txn: &T,
    p: Page<'a>,
    c: &Self::Cursor
) -> Option<(&'a K, &'a V, u64)>
[src]

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

fn left_child(p: Page<'_>, c: &Self::Cursor) -> u64[src]

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

fn right_child(p: Page<'_>, c: &Self::Cursor) -> u64[src]

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

fn set_cursor<'a, T: LoadPage>(
    txn: &'a T,
    page: Page<'_>,
    c: &mut Self::Cursor,
    k0: &K,
    v0: Option<&V>
) -> Result<(&'a K, &'a V, u64), usize>
[src]

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

fn split_at(c: &Self::Cursor) -> (Self::Cursor, Self::Cursor)[src]

Loading content...

Provided methods

fn cursor_first(p: &CowPage) -> Self::Cursor[src]

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.

fn cursor_last(p: &CowPage) -> Self::Cursor[src]

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

fn next<'b, T: LoadPage>(
    txn: &T,
    p: Page<'b>,
    c: &mut Self::Cursor
) -> Option<(&'b K, &'b V, u64)>
[src]

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.

fn prev<'b, T: LoadPage>(
    txn: &T,
    p: Page<'b>,
    c: &mut Self::Cursor
) -> Option<(&'b K, &'b V, u64)>
[src]

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

Loading content...

Implementors

impl<K: Storable, V: Storable> BTreePage<K, V> for sanakirja_core::btree::page::Page<K, V>[src]

type Cursor = PageCursor

impl<K: UnsizedStorable + ?Sized, V: UnsizedStorable + ?Sized> BTreePage<K, V> for sanakirja_core::btree::page_unsized::Page<K, V>[src]

type Cursor = PageCursor

Loading content...