cc_traits/impls/alloc/
btreemap.rs

1use crate::{
2	Clear, Collection, CollectionMut, CollectionRef, Get, GetKeyValue, GetMut, Iter, Keyed,
3	KeyedRef, Len, MapInsert, MapIter, MapIterMut, Remove, SimpleCollectionMut,
4	SimpleCollectionRef, SimpleKeyedRef,
5};
6use alloc::collections::BTreeMap;
7use core::borrow::Borrow;
8
9impl<K, V> Collection for BTreeMap<K, V> {
10	type Item = V;
11}
12
13impl<K, V> CollectionRef for BTreeMap<K, V> {
14	type ItemRef<'a> = &'a V where Self: 'a;
15
16	crate::covariant_item_ref!();
17}
18
19impl<K, V> CollectionMut for BTreeMap<K, V> {
20	type ItemMut<'a> = &'a mut V where Self: 'a;
21
22	crate::covariant_item_mut!();
23}
24
25impl<K, V> SimpleCollectionRef for BTreeMap<K, V> {
26	crate::simple_collection_ref!();
27}
28
29impl<K, V> SimpleCollectionMut for BTreeMap<K, V> {
30	crate::simple_collection_mut!();
31}
32
33impl<K, V> Keyed for BTreeMap<K, V> {
34	type Key = K;
35}
36
37impl<K, V> KeyedRef for BTreeMap<K, V> {
38	type KeyRef<'a> = &'a K where Self: 'a;
39
40	crate::covariant_key_ref!();
41}
42
43impl<K, V> SimpleKeyedRef for BTreeMap<K, V> {
44	crate::simple_keyed_ref!();
45}
46
47impl<K, V> Len for BTreeMap<K, V> {
48	#[inline(always)]
49	fn len(&self) -> usize {
50		self.len()
51	}
52
53	#[inline(always)]
54	fn is_empty(&self) -> bool {
55		self.is_empty()
56	}
57}
58
59impl<'a, Q, K: Ord, V> Get<&'a Q> for BTreeMap<K, V>
60where
61	K: Borrow<Q>,
62	Q: Ord + ?Sized,
63{
64	#[inline(always)]
65	fn get(&self, key: &'a Q) -> Option<&V> {
66		self.get(key)
67	}
68}
69
70impl<'a, Q, K: Ord, V> GetKeyValue<&'a Q> for BTreeMap<K, V>
71where
72	K: Borrow<Q>,
73	Q: Ord + ?Sized,
74{
75	#[inline(always)]
76	fn get_key_value(&self, key: &'a Q) -> Option<(&K, &V)> {
77		self.get_key_value(key)
78	}
79}
80
81impl<'a, Q, K: Ord, V> GetMut<&'a Q> for BTreeMap<K, V>
82where
83	K: Borrow<Q>,
84	Q: Ord + ?Sized,
85{
86	#[inline(always)]
87	fn get_mut(&mut self, key: &'a Q) -> Option<&mut V> {
88		self.get_mut(key)
89	}
90}
91
92impl<K: Ord, V> MapInsert<K> for BTreeMap<K, V> {
93	type Output = Option<V>;
94
95	#[inline(always)]
96	fn insert(&mut self, key: K, value: V) -> Option<V> {
97		self.insert(key, value)
98	}
99}
100
101impl<'a, Q, K: Ord, V> Remove<&'a Q> for BTreeMap<K, V>
102where
103	K: Borrow<Q>,
104	Q: Ord + ?Sized,
105{
106	#[inline(always)]
107	fn remove(&mut self, key: &'a Q) -> Option<V> {
108		self.remove(key)
109	}
110}
111
112impl<K: Ord, V> Clear for BTreeMap<K, V> {
113	#[inline(always)]
114	fn clear(&mut self) {
115		self.clear()
116	}
117}
118
119impl<K, V> Iter for BTreeMap<K, V> {
120	type Iter<'a> = alloc::collections::btree_map::Values<'a, K, V> where Self: 'a;
121
122	#[inline(always)]
123	fn iter(&self) -> Self::Iter<'_> {
124		self.values()
125	}
126}
127
128impl<K, V> MapIter for BTreeMap<K, V> {
129	type Iter<'a> = alloc::collections::btree_map::Iter<'a, K, V> where Self: 'a;
130
131	#[inline(always)]
132	fn iter(&self) -> Self::Iter<'_> {
133		self.iter()
134	}
135}
136
137impl<K, V> MapIterMut for BTreeMap<K, V> {
138	type IterMut<'a> = alloc::collections::btree_map::IterMut<'a, K, V> where Self: 'a;
139
140	#[inline(always)]
141	fn iter_mut(&mut self) -> Self::IterMut<'_> {
142		self.iter_mut()
143	}
144}
OSZAR »