Trait sanakirja_core::btree::BTreeMutPage [−][src]
Associated Types
Loading content...Required methods
fn init(page: &mut MutPage)
[src]
Initialise a page.
fn put<'a, T: AllocPage>(
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::Error>
[src]
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::Error>
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
.
fn update_left_child<T: AllocPage>(
txn: &mut T,
page: CowPage,
mutable: bool,
c: &Self::Cursor,
r: u64
) -> Result<Ok, T::Error>
[src]
txn: &mut T,
page: CowPage,
mutable: bool,
c: &Self::Cursor,
r: u64
) -> Result<Ok, T::Error>
Update the left child of the position pointed to by the cursor.
fn save_deleted_leaf_entry(k: &K, v: &V) -> Self::Saved
[src]
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.
unsafe fn from_saved<'a>(s: &Self::Saved) -> (&'a K, &'a V)
[src]
Recover the saved value.
fn del<T: AllocPage>(
txn: &mut T,
page: CowPage,
mutable: bool,
c: &Self::Cursor,
l: u64
) -> Result<(MutPage, u64), T::Error>
[src]
txn: &mut T,
page: CowPage,
mutable: bool,
c: &Self::Cursor,
l: u64
) -> Result<(MutPage, u64), T::Error>
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).
fn merge_or_rebalance<'a, 'b, T: AllocPage>(
txn: &mut T,
m: Concat<'a, K, V, Self>
) -> Result<Op<'a, T, K, V>, T::Error>
[src]
txn: &mut T,
m: Concat<'a, K, V, Self>
) -> Result<Op<'a, T, K, V>, T::Error>
Merge, rebalance or update a concatenation.
Implementors
impl<K: Storable + Debug, V: Storable + Debug> BTreeMutPage<K, V> for sanakirja_core::btree::page::Page<K, V>
[src]
fn init(page: &mut MutPage)
[src]
type Saved = (K, V)
fn save_deleted_leaf_entry(k: &K, v: &V) -> Self::Saved
[src]
unsafe fn from_saved<'a>(s: &Self::Saved) -> (&'a K, &'a V)
[src]
fn put<'a, T: AllocPage>(
txn: &mut T,
page: CowPage,
mutable: bool,
replace: bool,
c: &PageCursor,
k0: &'a K,
v0: &'a V,
k1v1: Option<(&'a K, &'a V)>,
l: u64,
r: u64
) -> Result<Put<'a, K, V>, T::Error>
[src]
txn: &mut T,
page: CowPage,
mutable: bool,
replace: bool,
c: &PageCursor,
k0: &'a K,
v0: &'a V,
k1v1: Option<(&'a K, &'a V)>,
l: u64,
r: u64
) -> Result<Put<'a, K, V>, T::Error>
fn update_left_child<T: AllocPage>(
txn: &mut T,
page: CowPage,
mutable: bool,
c: &Self::Cursor,
l: u64
) -> Result<Ok, T::Error>
[src]
txn: &mut T,
page: CowPage,
mutable: bool,
c: &Self::Cursor,
l: u64
) -> Result<Ok, T::Error>
fn del<T: AllocPage>(
txn: &mut T,
page: CowPage,
mutable: bool,
c: &PageCursor,
l: u64
) -> Result<(MutPage, u64), T::Error>
[src]
txn: &mut T,
page: CowPage,
mutable: bool,
c: &PageCursor,
l: u64
) -> Result<(MutPage, u64), T::Error>
fn merge_or_rebalance<'a, T: AllocPage>(
txn: &mut T,
m: Concat<'a, K, V, Self>
) -> Result<Op<'a, T, K, V>, T::Error>
[src]
txn: &mut T,
m: Concat<'a, K, V, Self>
) -> Result<Op<'a, T, K, V>, T::Error>
impl<K: UnsizedStorable + ?Sized + Debug, V: UnsizedStorable + ?Sized + Debug> BTreeMutPage<K, V> for sanakirja_core::btree::page_unsized::Page<K, V>
[src]
fn init(page: &mut MutPage)
[src]
type Saved = (*const K, *const V)
fn save_deleted_leaf_entry(k: &K, v: &V) -> Self::Saved
[src]
unsafe fn from_saved<'a>(s: &Self::Saved) -> (&'a K, &'a V)
[src]
fn put<'a, T: AllocPage>(
txn: &mut T,
page: CowPage,
mutable: bool,
replace: bool,
c: &PageCursor,
k0: &'a K,
v0: &'a V,
k1v1: Option<(&'a K, &'a V)>,
l: u64,
r: u64
) -> Result<Put<'a, K, V>, T::Error>
[src]
txn: &mut T,
page: CowPage,
mutable: bool,
replace: bool,
c: &PageCursor,
k0: &'a K,
v0: &'a V,
k1v1: Option<(&'a K, &'a V)>,
l: u64,
r: u64
) -> Result<Put<'a, K, V>, T::Error>
fn update_left_child<T: AllocPage>(
txn: &mut T,
page: CowPage,
mutable: bool,
c: &Self::Cursor,
l: u64
) -> Result<Ok, T::Error>
[src]
txn: &mut T,
page: CowPage,
mutable: bool,
c: &Self::Cursor,
l: u64
) -> Result<Ok, T::Error>
fn del<T: AllocPage>(
txn: &mut T,
page: CowPage,
mutable: bool,
c: &PageCursor,
l: u64
) -> Result<(MutPage, u64), T::Error>
[src]
txn: &mut T,
page: CowPage,
mutable: bool,
c: &PageCursor,
l: u64
) -> Result<(MutPage, u64), T::Error>
fn merge_or_rebalance<'a, T: AllocPage>(
txn: &mut T,
m: Concat<'a, K, V, Self>
) -> Result<Op<'a, T, K, V>, T::Error>
[src]
txn: &mut T,
m: Concat<'a, K, V, Self>
) -> Result<Op<'a, T, K, V>, T::Error>