hexga_core/collections/
capacity.rs1use std::collections::TryReserveError;
2
3use crate::*;
4
5pub trait Capacity
6{
7 type Param;
8 fn capacity(&self) -> usize;
9
10 fn with_capacity_and_param(capacity: usize, param : Self::Param) -> Self;
11 #[inline(always)]
12 fn with_capacity(capacity: usize) -> Self where Self : Sized, Self::Param : Default { Self::with_capacity_and_param(capacity, ___()) }
13
14 fn reserve(&mut self, additional: usize);
15 fn reserve_exact(&mut self, additional: usize); fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>;
18 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError>; }
20
21impl<K, V> Capacity for HashMap<K, V, std::hash::RandomState>
22where
23 K: Eq + Hash,
24{
25 type Param = ();
26 #[inline(always)]
27 fn capacity(&self) -> usize { self.capacity() }
28 #[inline(always)]
29 fn with_capacity_and_param(capacity: usize, _ : Self::Param) -> Self { Self::with_capacity(capacity) }
30
31 #[inline(always)]
32 fn reserve(&mut self, additional: usize) { self.reserve(additional); }
33 #[inline(always)]
34 fn reserve_exact(&mut self, additional: usize) { self.reserve(additional); }
35
36 #[inline(always)]
37 fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
38 #[inline(always)]
39 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
40}
41
42impl<T> Capacity for std::collections::BinaryHeap<T>
43where
44 T: Ord,
45{
46 type Param = ();
47 #[inline(always)]
48 fn capacity(&self) -> usize { self.capacity() }
49
50 #[inline(always)]
51 fn with_capacity_and_param(capacity: usize, _ : Self::Param) -> Self { Self::with_capacity(capacity) }
52
53 #[inline(always)]
54 fn reserve(&mut self, additional: usize) { self.reserve(additional); }
55 #[inline(always)]
56 fn reserve_exact(&mut self, additional: usize) { self.reserve_exact(additional); }
57
58 #[inline(always)]
59 fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
60 #[inline(always)]
61 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve_exact(additional) }
62}
63
64impl<T> Capacity for std::collections::HashSet<T, std::hash::RandomState>
65where
66 T: Eq + Hash,
67{
68 type Param = ();
69 #[inline(always)]
70 fn capacity(&self) -> usize { self.capacity() }
71
72 #[inline(always)]
73 fn with_capacity_and_param(capacity: usize, _ : Self::Param) -> Self { Self::with_capacity(capacity) }
74
75 #[inline(always)]
76 fn reserve(&mut self, additional: usize) { self.reserve(additional); }
77 #[inline(always)]
78 fn reserve_exact(&mut self, additional: usize) { self.reserve(additional); }
79
80 #[inline(always)]
81 fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
82 #[inline(always)]
83 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
84}
85
86impl<T> Capacity for std::collections::VecDeque<T>
87{
88 type Param = ();
89 #[inline(always)]
90 fn capacity(&self) -> usize { self.capacity() }
91
92 #[inline(always)]
93 fn with_capacity_and_param(capacity: usize, _ : Self::Param) -> Self { Self::with_capacity(capacity) }
94
95 #[inline(always)]
96 fn reserve(&mut self, additional: usize) { self.reserve(additional); }
97 #[inline(always)]
98 fn reserve_exact(&mut self, additional: usize) { self.reserve_exact(additional); }
99
100 #[inline(always)]
101 fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
102 #[inline(always)]
103 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve_exact(additional) }
104}
105
106impl Capacity for std::ffi::OsString
107{
108 type Param = ();
109 #[inline(always)]
110 fn capacity(&self) -> usize { self.capacity() }
111
112 #[inline(always)]
113 fn with_capacity_and_param(capacity: usize, _ : Self::Param) -> Self { Self::with_capacity(capacity) }
114
115 #[inline(always)]
116 fn reserve(&mut self, additional: usize) { self.reserve(additional); }
117 #[inline(always)]
118 fn reserve_exact(&mut self, additional: usize) { self.reserve_exact(additional); }
119
120 #[inline(always)]
121 fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
122 #[inline(always)]
123 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve_exact(additional) }
124}
125
126impl Capacity for std::path::PathBuf
133{
134 type Param = ();
135 #[inline(always)]
136 fn capacity(&self) -> usize { self.capacity() }
137
138 #[inline(always)]
139 fn with_capacity_and_param(capacity: usize, _ : Self::Param) -> Self { Self::with_capacity(capacity) }
140
141 #[inline(always)]
142 fn reserve(&mut self, additional: usize) { self.reserve(additional); }
143 #[inline(always)]
144 fn reserve_exact(&mut self, additional: usize) { self.reserve_exact(additional); }
145
146 #[inline(always)]
147 fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
148 #[inline(always)]
149 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve_exact(additional) }
150}
151
152impl<T> Capacity for Vec<T>
153{
154 type Param = ();
155 #[inline(always)]
156 fn capacity(&self) -> usize { self.capacity() }
157
158 #[inline(always)]
159 fn with_capacity_and_param(capacity: usize, _ : Self::Param) -> Self { Self::with_capacity(capacity) }
160
161 #[inline(always)]
162 fn reserve(&mut self, additional: usize) { self.reserve(additional); }
163 #[inline(always)]
164 fn reserve_exact(&mut self, additional: usize) { self.reserve_exact(additional); }
165
166 #[inline(always)]
167 fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
168 #[inline(always)]
169 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve_exact(additional) }
170}
171
172impl Capacity for String
200{
201 type Param = ();
202 #[inline(always)]
203 fn capacity(&self) -> usize { self.capacity() }
204
205 #[inline(always)]
206 fn with_capacity_and_param(capacity: usize, _ : Self::Param) -> Self { Self::with_capacity(capacity) }
207
208 #[inline(always)]
209 fn reserve(&mut self, additional: usize) { self.reserve(additional); }
210 #[inline(always)]
211 fn reserve_exact(&mut self, additional: usize) { self.reserve_exact(additional); }
212
213 #[inline(always)]
214 fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve(additional) }
215 #[inline(always)]
216 fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> { self.try_reserve_exact(additional) }
217}