pub trait Iterable<'a, T> {
type Iter: Iterator<Item = T>;
fn iter(&'a self) -> Self::Iter;
}
impl<'a, K, V, S> Iterable<'a, (&'a K, &'a V)> for HashMap<K, V, S> where
K: 'a + Eq + Hash,
V: 'a,
S: 'a + BuildHasher, type Iter = Iter<'a, K, V>;
impl<'a, K, V> Iterable<'a, (&'a K, &'a V)> for BTreeMap<K, V> where
K: 'a + Eq + Ord,
V: 'a, type Iter = Iter<'a, K, V>;
impl<'a, T: 'a> Iterable<'a, &'a T> for LinkedList<T> type Iter = Iter<'a, T>;
impl<'a, T: 'a> Iterable<'a, &'a T> for [T] type Iter = Iter<'a, T>;
impl<'a> Iterable<'a, char> for &'a str type Iter = Chars<'a>;
impl<'a> Iterable<'a, char> for String type Iter = Chars<'a>;
impl<'a, T: 'a> Iterable<'a, &'a T> for Vec<T> type Iter = Iter<'a, T>;