From 6a964ef5d28c87c32c605700800a0b4f01f75cd5 Mon Sep 17 00:00:00 2001 From: bronku Date: Sun, 14 Dec 2025 00:59:15 +0100 Subject: [PATCH] ok --- src/btree.rs | 13 +++++++------ src/file_storage.rs | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/btree.rs b/src/btree.rs index 4bc4e0c..961641c 100644 --- a/src/btree.rs +++ b/src/btree.rs @@ -45,7 +45,7 @@ where Node::Leaf(leaf) => { for (i, k) in leaf.keys.iter().enumerate() { if *k == key { - return Some(leaf.values[i]); + return leaf.values[i]; } } return None; @@ -79,19 +79,18 @@ where let mut inserted = false; for (i, k) in leaf.keys.iter_mut().enumerate() { if *k == key { - leaf.values[i] = value; + leaf.values[i] = Some(value); inserted = true; break; } else if key < *k { leaf.keys.insert(i, key); - leaf.values.insert(i, value); + leaf.values.insert(i, Some(value)); inserted = true; - break; - } + break; } } if !inserted { leaf.keys.push(key); - leaf.values.push(value); + leaf.values.push(Some(value)); } self.storage @@ -103,6 +102,8 @@ where } } + pub fn delete + fn split_leaf(&mut self, loc: usize, leaf: LeafNode, path: &mut Vec<(usize, InternalNode)>) { let mid = leaf.keys.len() / 2; let new_leaf = LeafNode { diff --git a/src/file_storage.rs b/src/file_storage.rs index edf9c82..2dc0613 100644 --- a/src/file_storage.rs +++ b/src/file_storage.rs @@ -118,7 +118,7 @@ mod tests { fn sample_leaf() -> Node { Node::Leaf(LeafNode { keys: vec![1, 2, 3], - values: vec![[1; 7], [2; 7], [3; 7]], + values: vec![Some([1; 7]), Some([2; 7]), Some([3; 7])], next: Some(42), }) } @@ -198,7 +198,7 @@ mod tests { prop_oneof![ ( prop::collection::vec(any::(), 0..=max), - prop::collection::vec(arb_record(), 0..=max), + prop::collection::vec(proptest::option::of(arb_record()), 0..=max), proptest::option::of(any::()), ) .prop_map(|(keys, values, next)| { Node::Leaf(LeafNode { keys, values, next }) }),