use super::*;
pub trait Insert<K,V=()> : Collection
{
fn insert(&mut self, key: K, value: V) -> Option<V>;
}
#[cfg(feature = "std")]
impl<K,V,S> Insert<K,V> for HashMap<K,V,S>
where
K: Eq + Hash,
S: BuildHasher
{
fn insert(&mut self, key: K, value: V) -> Option<V> {
self.insert(key, value)
}
}
#[cfg(feature = "std")]
impl<K,S> Insert<K,()> for HashSet<K,S>
where
K: Eq + Hash,
S: BuildHasher
{
fn insert(&mut self, key: K, _value: ()) -> Option<()> {
(!self.insert(key)).then_some(())
}
}
impl<K,V> Insert<K,V> for BTreeMap<K,V>
where
K: Ord,
{
fn insert(&mut self, key: K, value: V) -> Option<V> {
self.insert(key, value)
}
}
impl<K> Insert<K,()> for BTreeSet<K>
where
K: Ord,
{
fn insert(&mut self, key: K, _value: ()) -> Option<()> {
(!self.insert(key)).then_some(())
}
}