Skip to content

Commit 6540307

Browse files
authored
Ensure cloned interner can still look up the same symbols (#34)
1 parent 803c5d7 commit 6540307

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

src/interner.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ impl<S, B, H> Clone for StringInterner<S, B, H>
8282
where
8383
S: Symbol,
8484
B: Backend<S> + Clone,
85-
H: BuildHasher + Default,
85+
H: BuildHasher + Clone,
8686
{
8787
fn clone(&self) -> Self {
8888
Self {
8989
dedup: self.dedup.clone(),
90-
hasher: Default::default(),
90+
hasher: self.hasher.clone(),
9191
backend: self.backend.clone(),
9292
}
9393
}

src/tests.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,13 @@ macro_rules! gen_tests_for_backend {
102102

103103
#[test]
104104
fn clone_works() {
105-
let interner = StringInterner::new();
106-
let cloned = interner.clone();
105+
let mut interner = StringInterner::new();
106+
assert_eq!(interner.get_or_intern("a").to_usize(), 0);
107+
108+
let mut cloned = interner.clone();
107109
assert_eq!(interner, cloned);
110+
// And the clone should have the same interned values
111+
assert_eq!(cloned.get_or_intern("a").to_usize(), 0);
108112
}
109113

110114
#[test]

0 commit comments

Comments
 (0)