Skip to content

Commit 97f22a3

Browse files
authored
Merge pull request rust-lang#34 from xfix/extend-copy
Implement Extend<(&K, &V)> for Copy types
2 parents ea4e6e1 + 2db46a8 commit 97f22a3

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/lib.rs

+18
Original file line numberDiff line numberDiff line change
@@ -1531,6 +1531,16 @@ impl<K, V, S> Extend<(K, V)> for OrderMap<K, V, S>
15311531
}
15321532
}
15331533

1534+
impl<'a, K, V, S> Extend<(&'a K, &'a V)> for OrderMap<K, V, S>
1535+
where K: Hash + Eq + Copy,
1536+
V: Copy,
1537+
S: BuildHasher,
1538+
{
1539+
fn extend<I: IntoIterator<Item=(&'a K, &'a V)>>(&mut self, iterable: I) {
1540+
self.extend(iterable.into_iter().map(|(&key, &value)| (key, value)));
1541+
}
1542+
}
1543+
15341544
impl<K, V, S> Default for OrderMap<K, V, S>
15351545
where S: BuildHasher + Default,
15361546
{
@@ -1769,4 +1779,12 @@ mod tests {
17691779
assert_ne!(map_a, map_c);
17701780
assert_ne!(map_c, map_a);
17711781
}
1782+
1783+
#[test]
1784+
fn extend() {
1785+
let mut map = OrderMap::new();
1786+
map.extend(vec![(&1, &2), (&3, &4)]);
1787+
map.extend(vec![(5, 6)]);
1788+
assert_eq!(map.into_iter().collect::<Vec<_>>(), vec![(1, 2), (3, 4), (5, 6)]);
1789+
}
17721790
}

0 commit comments

Comments
 (0)