mirror of
https://github.com/rust-embedded/heapless.git
synced 2025-09-27 20:40:32 +00:00
Merge #84
84: Implement Eq and PartialEq for Indexmap r=japaric a=XOSplicer ref #56 Co-authored-by: Felix Stegmaier <stegmaier.felix@gmail.com>
This commit is contained in:
commit
773360b5fd
@ -781,6 +781,34 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<K, V, N, S, N2, S2> PartialEq<IndexMap<K, V, N2, S2>> for IndexMap<K, V, N, S>
|
||||||
|
where
|
||||||
|
K: Eq + Hash,
|
||||||
|
V: Eq,
|
||||||
|
S: BuildHasher,
|
||||||
|
N: ArrayLength<Bucket<K, V>> + ArrayLength<Option<Pos>>,
|
||||||
|
S2: BuildHasher,
|
||||||
|
N2: ArrayLength<Bucket<K, V>> + ArrayLength<Option<Pos>>,
|
||||||
|
{
|
||||||
|
fn eq(&self, other: &IndexMap<K, V, N2, S2>) -> bool {
|
||||||
|
self.len() == other.len()
|
||||||
|
&& self
|
||||||
|
.iter()
|
||||||
|
.all(|(key, value)| other.get(key).map_or(false, |v| *value == *v))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<K, V, N, S> Eq for IndexMap<K, V, N, S>
|
||||||
|
where
|
||||||
|
K: Eq + Hash,
|
||||||
|
V: Eq,
|
||||||
|
S: BuildHasher,
|
||||||
|
N: ArrayLength<Bucket<K, V>> + ArrayLength<Option<Pos>>,
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
impl<K, V, N, S> Extend<(K, V)> for IndexMap<K, V, N, S>
|
impl<K, V, N, S> Extend<(K, V)> for IndexMap<K, V, N, S>
|
||||||
where
|
where
|
||||||
K: Eq + Hash,
|
K: Eq + Hash,
|
||||||
@ -944,4 +972,35 @@ mod tests {
|
|||||||
mem::size_of::<usize>() // entries.length
|
mem::size_of::<usize>() // entries.length
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn partial_eq() {
|
||||||
|
{
|
||||||
|
let mut a: FnvIndexMap<_, _, U4> = FnvIndexMap::new();
|
||||||
|
a.insert("k1", "v1").unwrap();
|
||||||
|
|
||||||
|
let mut b: FnvIndexMap<_, _, U4> = FnvIndexMap::new();
|
||||||
|
b.insert("k1", "v1").unwrap();
|
||||||
|
|
||||||
|
assert!(a == b);
|
||||||
|
|
||||||
|
b.insert("k2", "v2").unwrap();
|
||||||
|
|
||||||
|
assert!(a != b);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let mut a: FnvIndexMap<_, _, U4> = FnvIndexMap::new();
|
||||||
|
a.insert("k1", "v1").unwrap();
|
||||||
|
a.insert("k2", "v2").unwrap();
|
||||||
|
|
||||||
|
let mut b: FnvIndexMap<_, _, U4> = FnvIndexMap::new();
|
||||||
|
b.insert("k2", "v2").unwrap();
|
||||||
|
b.insert("k1", "v1").unwrap();
|
||||||
|
|
||||||
|
assert!(a == b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user