use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, LinkedList, VecDeque};
use std::hash::Hash;
pub trait Convert<Item> {
#[inline]
fn to_bmap<K, V>(self) -> BTreeMap<K, V>
where
K: Ord,
Self: IntoIterator<Item = (K, V)> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn to_bset(self) -> BTreeSet<Item>
where
Item: Ord,
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn to_deque(self) -> VecDeque<Item>
where
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn to_heap(self) -> BinaryHeap<Item>
where
Item: Ord,
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn to_list(self) -> LinkedList<Item>
where
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn to_map<K, V>(self) -> HashMap<K, V>
where
K: Eq + Hash,
Self: IntoIterator<Item = (K, V)> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn to_set(self) -> HashSet<Item>
where
Item: Eq + Hash,
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
#[inline]
fn to_vec(self) -> Vec<Item>
where
Self: IntoIterator<Item = Item> + Sized,
{
self.into_iter().collect()
}
}
impl<Item, I> Convert<Item> for I where I: IntoIterator<Item = Item> {}