1use std::collections::HashMap;
2use std::hash::{BuildHasher, Hash};
3
4pub trait Push<T> {
6 fn push(&mut self, value: T);
8}
9
10impl<T> Push<T> for Vec<T> {
11 #[inline]
12 fn push(&mut self, value: T) {
13 self.push(value);
14 }
15}
16
17impl<T> Push<T> for &mut Vec<T> {
18 #[inline]
19 fn push(&mut self, value: T) {
20 (*self).push(value);
21 }
22}
23
24impl<T> Push<T> for () {
25 #[inline]
27 fn push(&mut self, _value: T) {}
28}
29
30impl<K, V, S> Push<(K, V)> for HashMap<K, V, S>
31where
32 K: Eq + Hash,
33 S: BuildHasher,
34{
35 #[inline]
36 fn push(&mut self, (key, value): (K, V)) {
37 self.insert(key, value);
38 }
39}
40
41impl<K, V, S> Push<(K, V)> for &mut HashMap<K, V, S>
42where
43 K: Eq + Hash,
44 S: BuildHasher,
45{
46 #[inline]
47 fn push(&mut self, (key, value): (K, V)) {
48 self.insert(key, value);
49 }
50}