#![allow(unused, dead_code)]
use core::borrow::Borrow;
use core::marker::PhantomData;
use core::ptr::NonNull;
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct BTreeMap<K: Ord, V> {
elements: PhantomData<NonNull<(K, V)>>,
data: Void,
}
#[allow(unused, dead_code)]
impl<K: Ord, V> BTreeMap<K, V> {
pub fn clear(&mut self) { }
pub fn get<Q>(&self, key: &Q) -> Option<&V>
where
K: Borrow<Q>,
Q: Ord + ?Sized,
{
match self.data { }
}
pub fn contains_key<Q>(&self, key: &Q) -> bool
where
K: Borrow<Q>,
Q: Ord + ?Sized,
{
match self.data { }
}
pub fn get_mut<Q>(&self, key: &Q) -> Option<&mut V>
where
K: Borrow<Q>,
Q: Ord + ?Sized,
{
match self.data { }
}
pub fn insert(&mut self, key: K, value: V) -> Option<V> {
match self.data { }
}
pub fn remove<Q>(&mut self, key: &Q) -> Option<V>
where
K: Borrow<Q>,
Q: Ord + ?Sized,
{
match self.data { }
}
pub fn entry(&mut self, key: K) -> Entry<K, V> {
match self.data { }
}
}
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
enum Void { }
pub enum Entry<'a, K, V> {
Vacant(VacantEntry<'a, K, V>),
Occupied(OccupiedEntry<'a, K, V>),
}
pub struct VacantEntry<'a, K, V> {
phantom: PhantomData<&'a (K, V)>,
void: Void,
}
pub struct OccupiedEntry<'a, K, V> {
phantom: PhantomData<&'a (K, V)>,
void: Void,
}
impl<K, V> OccupiedEntry<'_, K, V> {
pub fn get(&self) -> &V {
match self.void { }
}
pub fn get_mut(&mut self) -> &mut V {
match self.void { }
}
pub fn remove(self) { }
pub fn remove_entry(self) -> (K, V) {
match self.void { }
}
}
impl<'a, K, V> OccupiedEntry<'a, K, V> {
pub fn into_mut(self) -> &'a mut V {
match self.void { }
}
}
impl<K, V> VacantEntry<'_, K, V> {
pub fn key(&self) -> &K {
match self.void { }
}
pub fn into_key(self) -> K {
match self.void { }
}
}
impl<'a, K, V> VacantEntry<'a, K, V> {
pub fn insert(self, value: V) -> &'a mut V {
match self.void { }
}
}