1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use super::Entry;

/// A basic interface for a `Map`
///
/// # Example
/// ```
/// use implhm::{Map, SCHashMap};
///
/// fn main() {
///     let mut map = SCHashMap::default();
///
///     map.insert("orange", "ORANGE");
///     map.insert("blueberry", "BLUEBERRY");
///
///     assert_eq!(map.get("orange"), Some("ORANGE"));
///     assert_eq!(map.get("blueberry"), Some("BLUEBERRY"));
/// }
/// ```
pub trait Map<K, V>: Default {
    fn new(capacity: usize) -> Self;
    fn len(&self) -> usize;
    fn get(&self, key: K) -> Option<V>;
    fn insert(&mut self, key: K, value: V) -> Option<V>;
    fn remove(&mut self, key: K) -> Option<V>;
    fn entries(&self) -> Vec<Entry<K, V>>;
    fn keys(&self) -> Vec<K>;
    fn values(&self) -> Vec<V>;
}