pahs/
push.rs

1use std::collections::HashMap;
2use std::hash::{BuildHasher, Hash};
3
4/// Helper trait for collections to push into.
5pub trait Push<T> {
6    /// Pushes a value into the collection.
7    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    /// Discards the value.
26    #[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}