removed option

This commit is contained in:
bronku 2025-12-14 10:56:45 +01:00
parent 6a964ef5d2
commit 4e7f4fafbd
3 changed files with 9 additions and 10 deletions

View file

@ -45,7 +45,7 @@ where
Node::Leaf(leaf) => { Node::Leaf(leaf) => {
for (i, k) in leaf.keys.iter().enumerate() { for (i, k) in leaf.keys.iter().enumerate() {
if *k == key { if *k == key {
return leaf.values[i]; return Some(leaf.values[i]);
} }
} }
return None; return None;
@ -79,18 +79,19 @@ where
let mut inserted = false; let mut inserted = false;
for (i, k) in leaf.keys.iter_mut().enumerate() { for (i, k) in leaf.keys.iter_mut().enumerate() {
if *k == key { if *k == key {
leaf.values[i] = Some(value); leaf.values[i] = value;
inserted = true; inserted = true;
break; break;
} else if key < *k { } else if key < *k {
leaf.keys.insert(i, key); leaf.keys.insert(i, key);
leaf.values.insert(i, Some(value)); leaf.values.insert(i, value);
inserted = true; inserted = true;
break; } break;
}
} }
if !inserted { if !inserted {
leaf.keys.push(key); leaf.keys.push(key);
leaf.values.push(Some(value)); leaf.values.push(value);
} }
self.storage self.storage
@ -102,8 +103,6 @@ where
} }
} }
pub fn delete
fn split_leaf(&mut self, loc: usize, leaf: LeafNode, path: &mut Vec<(usize, InternalNode)>) { fn split_leaf(&mut self, loc: usize, leaf: LeafNode, path: &mut Vec<(usize, InternalNode)>) {
let mid = leaf.keys.len() / 2; let mid = leaf.keys.len() / 2;
let new_leaf = LeafNode { let new_leaf = LeafNode {

View file

@ -118,7 +118,7 @@ mod tests {
fn sample_leaf() -> Node { fn sample_leaf() -> Node {
Node::Leaf(LeafNode { Node::Leaf(LeafNode {
keys: vec![1, 2, 3], keys: vec![1, 2, 3],
values: vec![Some([1; 7]), Some([2; 7]), Some([3; 7])], values: vec![[1; 7], [2; 7], [3; 7]],
next: Some(42), next: Some(42),
}) })
} }
@ -198,7 +198,7 @@ mod tests {
prop_oneof![ prop_oneof![
( (
prop::collection::vec(any::<i32>(), 0..=max), prop::collection::vec(any::<i32>(), 0..=max),
prop::collection::vec(proptest::option::of(arb_record()), 0..=max), prop::collection::vec(arb_record(), 0..=max),
proptest::option::of(any::<usize>()), proptest::option::of(any::<usize>()),
) )
.prop_map(|(keys, values, next)| { Node::Leaf(LeafNode { keys, values, next }) }), .prop_map(|(keys, values, next)| { Node::Leaf(LeafNode { keys, values, next }) }),

View file

@ -18,7 +18,7 @@ pub struct HeaderNode {
#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)]
pub struct LeafNode { pub struct LeafNode {
pub keys: Vec<i32>, pub keys: Vec<i32>,
pub values: Vec<Option<Record>>, pub values: Vec<Record>,
pub next: Option<usize>, pub next: Option<usize>,
} }