pub trait BTreePage<K: ?Sized, V: ?Sized>: Sized {
    type Cursor: Clone + Copy + Debug;

Show 15 methods // Required 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<'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); // Provided methods 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)> { ... }
}

Required Associated Types§

Required Methods§

source

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

Whether this cursor is at the end of the page.

source

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

Whether this cursor is strictly before the first element.

source

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

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

source

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

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

source

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

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

source

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

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

source

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

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

source

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

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

source

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

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

source

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>

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.

source

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

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§

source

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

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.

source

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

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

source

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

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.

source

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

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

Object Safety§

This trait is not object safe.

Implementors§

source§

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

§

type Cursor = PageCursor

source§

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

§

type Cursor = PageCursor