Skip to content

Commit e7455cd

Browse files
Merge #117
117: accept unsized types in more places r=crepererum a=crepererum Co-authored-by: Marco Neumann <marco@crepererum.net>
2 parents 2ac4e2e + cc1f73a commit e7455cd

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

src/countminsketch.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ use crate::hash_utils::HashIterBuilder;
125125
#[derive(Clone)]
126126
pub struct CountMinSketch<T, C = usize, B = BuildHasherDefault<DefaultHasher>>
127127
where
128-
T: Hash,
128+
T: Hash + ?Sized,
129129
C: CheckedAdd + Clone + One + Ord + Unsigned + Zero,
130130
B: BuildHasher + Clone + Eq,
131131
{
@@ -138,7 +138,7 @@ where
138138

139139
impl<T, C> CountMinSketch<T, C>
140140
where
141-
T: Hash,
141+
T: Hash + ?Sized,
142142
C: CheckedAdd + Clone + One + Ord + Unsigned + Zero,
143143
{
144144
/// Create new CountMinSketch based on table size.
@@ -172,7 +172,7 @@ where
172172

173173
impl<T, C, B> CountMinSketch<T, C, B>
174174
where
175-
T: Hash,
175+
T: Hash + ?Sized,
176176
C: CheckedAdd + Clone + One + Ord + Unsigned + Zero,
177177
B: BuildHasher + Clone + Eq,
178178
{
@@ -300,7 +300,7 @@ where
300300

301301
impl<T> fmt::Debug for CountMinSketch<T>
302302
where
303-
T: Hash,
303+
T: Hash + ?Sized,
304304
{
305305
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
306306
write!(f, "CountMinSketch {{ w: {}, d: {} }}", self.w, self.d)
@@ -513,6 +513,15 @@ mod tests {
513513
assert_eq!(cms.query_point(&2), 0);
514514
}
515515

516+
#[test]
517+
fn add_unsized() {
518+
let mut cms = CountMinSketch::<str, usize>::with_params(10, 10);
519+
520+
assert_eq!(cms.add("test"), 1);
521+
assert_eq!(cms.query_point("test"), 1);
522+
assert_eq!(cms.query_point("foo"), 0);
523+
}
524+
516525
#[test]
517526
fn send() {
518527
let cms = CountMinSketch::<NotSend>::with_params(10, 10);

src/hyperloglog.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,15 @@ mod tests {
706706
);
707707
}
708708

709+
#[test]
710+
fn add_unsized() {
711+
let mut hll = HyperLogLog::new(4);
712+
713+
hll.add("test1");
714+
hll.add("test2");
715+
assert_eq!(hll.count(), 2);
716+
}
717+
709718
#[test]
710719
fn send() {
711720
let hll: HyperLogLog<NotSend> = HyperLogLog::new(4);

0 commit comments

Comments
 (0)