use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet, VecDeque};
use crate::{Commonality, TotalBTreeMap, TotalHashMap};
pub struct EmptyCommonality(());
macro_rules! impl_empty {
({$($generics:tt)*}, $Coll:path $(,)?) => {
impl<$($generics)*> Commonality<$Coll> for EmptyCommonality {
fn common() -> $Coll {
Default::default()
}
fn is_common(value: &$Coll) -> bool {
value.is_empty()
}
}
};
}
impl_empty!({ T }, Vec<T>);
impl_empty!({ T }, VecDeque<T>);
impl_empty!({ T }, HashSet<T>);
impl_empty!({ K, V }, HashMap<K, V>);
impl_empty!({ T }, BTreeSet<T>);
impl_empty!({ K, V }, BTreeMap<K, V>);
impl_empty!({ K, V, C: Commonality<V> }, TotalHashMap<K, V, C>);
impl_empty!({ K, V, C: Commonality<V> }, TotalBTreeMap<K, V, C>);