Skip to content

Commit 204cfed

Browse files
committed
feat: search expect reference
1 parent 61a832f commit 204cfed

File tree

2 files changed

+31
-31
lines changed

2 files changed

+31
-31
lines changed

benches/compare_rbtree.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fn bench_search_custom(c: &mut Criterion) {
8282
group.bench_function("Search 10_000 - Custom RBTree", |b| {
8383
b.iter(|| {
8484
for i in 0..N {
85-
black_box(tree.search(i));
85+
black_box(tree.search(&i));
8686
}
8787
});
8888
});
@@ -111,10 +111,10 @@ criterion_group!(
111111
name = benches;
112112
config = Criterion::default();
113113
targets =
114-
bench_insert_custom,
115-
bench_insert_lib,
116-
bench_remove_custom,
117-
bench_remove_lib,
114+
//bench_insert_custom,
115+
//bench_insert_lib,
116+
//bench_remove_custom,
117+
//bench_remove_lib,
118118
bench_search_custom,
119119
bench_search_lib,
120120
);

src/lib.rs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ impl<K: Ord, V, const N: usize> RedBlackTree<K,V,N> {
4646
}
4747

4848
#[inline(always)]
49-
pub fn search(&self, key: K) -> Option<&V> {
49+
pub fn search(&self, key: &K) -> Option<&V> {
5050
let x = self.get_index_by_key(&key);
5151
if x == SENTINEL{
5252
return None;
@@ -585,20 +585,20 @@ mod tests {
585585
#[test]
586586
fn test_insert_and_search() {
587587
let tree = setup_small_tree();
588-
assert_eq!(tree.search(10), Some(&"A"));
589-
assert_eq!(tree.search(20), Some(&"B"));
590-
assert_eq!(tree.search(5), Some(&"C"));
591-
assert_eq!(tree.search(30), None);
588+
assert_eq!(tree.search(&10), Some(&"A"));
589+
assert_eq!(tree.search(&20), Some(&"B"));
590+
assert_eq!(tree.search(&5), Some(&"C"));
591+
assert_eq!(tree.search(&30), None);
592592
assert!(tree.is_valid());
593593
}
594594

595595
#[test]
596596
fn test_remove_leaf_node() {
597597
let mut tree = setup_small_tree();
598598
tree.remove(5);
599-
assert_eq!(tree.search(5), None);
600-
assert_eq!(tree.search(10), Some(&"A"));
601-
assert_eq!(tree.search(20), Some(&"B"));
599+
assert_eq!(tree.search(&5), None);
600+
assert_eq!(tree.search(&10), Some(&"A"));
601+
assert_eq!(tree.search(&20), Some(&"B"));
602602
assert!(tree.is_valid());
603603
}
604604

@@ -610,8 +610,8 @@ mod tests {
610610
tree.insert(2, "C");
611611

612612
tree.remove(5);
613-
assert_eq!(tree.search(5), None);
614-
assert_eq!(tree.search(2), Some(&"C"));
613+
assert_eq!(tree.search(&5), None);
614+
assert_eq!(tree.search(&2), Some(&"C"));
615615
assert!(tree.is_valid());
616616
}
617617

@@ -625,9 +625,9 @@ mod tests {
625625
tree.insert(18, "E");
626626

627627
tree.remove(15);
628-
assert_eq!(tree.search(15), None);
629-
assert_eq!(tree.search(12), Some(&"D"));
630-
assert_eq!(tree.search(18), Some(&"E"));
628+
assert_eq!(tree.search(&15), None);
629+
assert_eq!(tree.search(&12), Some(&"D"));
630+
assert_eq!(tree.search(&18), Some(&"E"));
631631
assert!(tree.is_valid());
632632
}
633633

@@ -638,7 +638,7 @@ mod tests {
638638
tree.remove(42);
639639
tree.insert(42, "Y");
640640

641-
assert_eq!(tree.search(42), Some(&"Y"));
641+
assert_eq!(tree.search(&42), Some(&"Y"));
642642
assert!(tree.is_valid());
643643
}
644644

@@ -650,11 +650,11 @@ mod tests {
650650
tree.insert(i, i * 10);
651651
}
652652
for i in 0..100 {
653-
assert_eq!(tree.search(i), Some(&(i * 10)));
653+
assert_eq!(tree.search(&i), Some(&(i * 10)));
654654
}
655655
for i in 0..100 {
656656
tree.remove(i);
657-
assert_eq!(tree.search(i), None);
657+
assert_eq!(tree.search(&i), None);
658658
}
659659
assert!(tree.is_valid());
660660
}
@@ -670,10 +670,10 @@ mod tests {
670670
tree.remove(70);
671671

672672
for &k in &[30, 70] {
673-
assert_eq!(tree.search(k), None);
673+
assert_eq!(tree.search(&k), None);
674674
}
675675
for &k in &[20, 40, 60, 80] {
676-
assert_eq!(tree.search(k), Some(&k));
676+
assert_eq!(tree.search(&k), Some(&k));
677677
}
678678
assert!(tree.is_valid());
679679
}
@@ -696,13 +696,13 @@ mod tests {
696696
tree.insert(k, k + 123);
697697
}
698698
for &k in &keys {
699-
assert_eq!(tree.search(k), Some(&(k + 123)));
699+
assert_eq!(tree.search(&k), Some(&(k + 123)));
700700
}
701701

702702
keys.shuffle(&mut rng);
703703
for &k in &keys {
704704
tree.remove(k);
705-
assert_eq!(tree.search(k), None);
705+
assert_eq!(tree.search(&k), None);
706706
}
707707

708708
assert_eq!(tree.root, SENTINEL);
@@ -718,11 +718,11 @@ mod tests {
718718
tree.insert(i, i);
719719
}
720720
for i in 0..COUNT {
721-
assert_eq!(tree.search(i), Some(&i));
721+
assert_eq!(tree.search(&i), Some(&i));
722722
}
723723
for i in 0..COUNT {
724724
tree.remove(i);
725-
assert_eq!(tree.search(i), None);
725+
assert_eq!(tree.search(&i), None);
726726
}
727727

728728
assert_eq!(tree.root, SENTINEL);
@@ -738,10 +738,10 @@ mod tests {
738738
}
739739
for i in 0..5_000 {
740740
tree.remove(i);
741-
assert_eq!(tree.search(i), None);
741+
assert_eq!(tree.search(&i), None);
742742
}
743743
for i in 5_000..10_000 {
744-
assert_eq!(tree.search(i), Some(&i));
744+
assert_eq!(tree.search(&i), Some(&i));
745745
}
746746
}
747747

@@ -753,8 +753,8 @@ mod tests {
753753
tree.update(42, "updated");
754754
tree.update(100, "new");
755755

756-
assert_eq!(tree.search(42), Some(&"updated"));
757-
assert_eq!(tree.search(100), Some(&"new"));
756+
assert_eq!(tree.search(&42), Some(&"updated"));
757+
assert_eq!(tree.search(&100), Some(&"new"));
758758
assert!(tree.is_valid());
759759
}
760760
}

0 commit comments

Comments
 (0)