Trait sdb::btree::BTreeMutPage[]

pub trait BTreeMutPage<K, V>: BTreePage<K, V> + Debug where
    K: ?Sized,
    V: ?Sized
{ type Saved; fn init(page: &mut MutPage);
fn put<T>(
        txn: &mut T,
        page: CowPage,
        mutable: bool,
        replace: bool,
        c: &Self::Cursor,
        k0: &'a K,
        v0: &'a V,
        k1v1: Option<(&'a K, &'a V)>,
        l: u64,
        r: u64
    ) -> Result<Put<'a, K, V>, <T as LoadPage>::Error>
    where
        T: AllocPage
;
fn update_left_child<T>(
        txn: &mut T,
        page: CowPage,
        mutable: bool,
        c: &Self::Cursor,
        r: u64
    ) -> Result<Ok, <T as LoadPage>::Error>
    where
        T: AllocPage
;
fn save_deleted_leaf_entry(k: &K, v: &V) -> Self::Saved;
unsafe fn from_saved<'a>(s: &Self::Saved) -> (&'a K, &'a V);
fn del<T>(
        txn: &mut T,
        page: CowPage,
        mutable: bool,
        c: &Self::Cursor,
        l: u64
    ) -> Result<(MutPage, u64), <T as LoadPage>::Error>
    where
        T: AllocPage
;
fn merge_or_rebalance<T>(
        txn: &mut T,
        m: Concat<'a, K, V, Self>
    ) -> Result<Op<'a, T, K, V>, <T as LoadPage>::Error>
    where
        T: AllocPage
; unsafe fn put_mut(
        page: &mut MutPage,
        c: &Self::Cursor,
        k0: &K,
        v0: &V,
        r: u64
    ) { ... }
unsafe fn set_left_child(page: &mut MutPage, c: &Self::Cursor, l: u64) { ... } }

Associated Types

Required methods

Initialise a page.

Add an entry to the page, possibly splitting the page in the process.

Makes the assumption that k1v1.is_some() implies replace. The “double insertion” is only ever used when deleting, and when the right child of a deleted entry (in an internal node) has split while we were looking for a replacement for the deleted entry.

Since we only look for replacements in the right child, the left child of the insertion isn’t modified, in which case l and r are interpreted as the left and right child of the new entry, k1v1.

Update the left child of the position pointed to by the cursor.

fn save_deleted_leaf_entry(k: &K, v: &V) -> Self::Saved

Save a leaf entry as a replacement, when we delete at an internal node. This can be a pointer to the leaf if the leaf isn’t mutated, or the actual value, or something else.

Recover the saved value.

Delete an entry on the page, returning the resuting page along with the offset of the freed page (or 0 if no page was freed, i.e. if page is mutable).

Merge, rebalance or update a concatenation.

Provided methods

Add an entry to page, at position c. Does not check whether there is enough space to do so. This method is mostly useful for cloning pages.

Implementors

pub fn save_deleted_leaf_entry(
    k: &K,
    v: &V
) -> <Page<K, V> as BTreeMutPage<K, V>>::Saved
pub fn save_deleted_leaf_entry(
    k: &K,
    v: &V
) -> <Page<K, V> as BTreeMutPage<K, V>>::Saved