use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, LinkedList, VecDeque};
use std::hash::Hash;
pub trait TransformInto<Item> {
#[inline]
fn into_bmap<K, V>(self) -> BTreeMap<K, V>
where
K: Ord,
Self: IntoIterator<Item = (K, V)> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn into_bset(self) -> BTreeSet<Item>
where
Item: Ord,
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn into_deque(self) -> VecDeque<Item>
where
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn into_heap(self) -> BinaryHeap<Item>
where
Item: Ord,
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn into_list(self) -> LinkedList<Item>
where
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn into_map<K, V>(self) -> HashMap<K, V>
where
K: Eq + Hash,
Self: IntoIterator<Item = (K, V)> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn into_set(self) -> HashSet<Item>
where
Item: Eq + Hash,
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
}
impl<Item, I> TransformInto<Item> for I where I: IntoIterator<Item = Item> {}