ok
This commit is contained in:
parent
2466e27bd0
commit
6a964ef5d2
2 changed files with 9 additions and 8 deletions
13
src/btree.rs
13
src/btree.rs
|
|
@ -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 Some(leaf.values[i]);
|
return leaf.values[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return None;
|
return None;
|
||||||
|
|
@ -79,19 +79,18 @@ 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] = value;
|
leaf.values[i] = Some(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, value);
|
leaf.values.insert(i, Some(value));
|
||||||
inserted = true;
|
inserted = true;
|
||||||
break;
|
break; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if !inserted {
|
if !inserted {
|
||||||
leaf.keys.push(key);
|
leaf.keys.push(key);
|
||||||
leaf.values.push(value);
|
leaf.values.push(Some(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
self.storage
|
self.storage
|
||||||
|
|
@ -103,6 +102,8 @@ 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 {
|
||||||
|
|
|
||||||
|
|
@ -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![[1; 7], [2; 7], [3; 7]],
|
values: vec![Some([1; 7]), Some([2; 7]), Some([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(arb_record(), 0..=max),
|
prop::collection::vec(proptest::option::of(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 }) }),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue