• Home
  • Raw
  • Download

Lines Matching +full:set +full:- +full:array

5 use super::{take, Array};
13 /// Error resulting from attempting to insert into a full array
20 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { in fmt()
25 /// An array-backed set
27 /// This set supports `O(n)` operations and has a fixed size, thus may fail to
30 /// The set is backed by an array of type `A` and indexed by type `L`.
34 pub struct ArraySet<A: Array, L> {
39 impl<A: Array + Default, L: From<u8>> ArraySet<A, L> {
40 /// Constructs a new, empty, set
42 pub fn new() -> Self { in new()
47 impl<A: Array, L: Copy + Into<usize>> ArraySet<A, L> {
48 /// Constructs a new set from given inputs
52 pub fn from(arr: A, len: L) -> Self { in from()
54 panic!("ArraySet::from(array, len): len > array.len()"); in from()
60 impl<A: Array, L> ArraySet<A, L>
64 /// Returns the fixed capacity of the set
66 pub fn capacity(&self) -> usize { in capacity()
70 /// Returns the number of elements in the set
72 pub fn len(&self) -> usize { in len()
76 /// Returns true when the set contains no elements
78 pub fn is_empty(&self) -> bool { in is_empty()
90 pub fn iter(&self) -> Iter<A::Item> { in iter()
95 impl<A: Array, L> ArraySet<A, L>
99 /// Check whether the set contains `elt`
101 pub fn contains<Q: Eq + ?Sized>(&self, elt: &Q) -> bool in contains()
109 pub fn get<Q: Eq + ?Sized>(&self, elt: &Q) -> Option<&A::Item> in get()
124 pub fn remove<Q: Eq + ?Sized>(&mut self, elt: &Q) -> Option<A::Item> in remove()
132 let l1 = len - 1; in remove()
136 self.len -= L::from(1); in remove()
146 F: FnMut(&A::Item) -> bool, in retain()
153 len -= L::from(1); in retain()
165 impl<A: Array, L> ArraySet<A, L>
172 /// Due to the fixed size of the backing array, insertion may fail.
174 pub fn insert(&mut self, elt: A::Item) -> Result<bool, InsertError> { in insert()
190 pub fn get_or_insert(&mut self, elt: A::Item) -> Result<&A::Item, InsertError> {
196 Ok(&self.arr.as_slice()[len - 1])
203 /// and the backing array is full, preventing insertion.
207 ) -> Result<Option<A::Item>, InsertError> { in replace()
234 fn len(&self) -> usize { in len()
235 self.a.len() - self.i in len()
243 fn next(&mut self) -> Option<Self::Item> { in next()
254 fn size_hint(&self) -> (usize, Option<usize>) { in size_hint()
272 let mut set: ArraySet<[i8; 7], u8> = ArraySet::new(); in test() localVariable
273 assert_eq!(set.capacity(), 7); in test()
275 assert_eq!(set.insert(1), Ok(true)); in test()
276 assert_eq!(set.insert(5), Ok(true)); in test()
277 assert_eq!(set.insert(6), Ok(true)); in test()
278 assert_eq!(set.len(), 3); in test()
280 assert_eq!(set.insert(5), Ok(false)); in test()
281 assert_eq!(set.len(), 3); in test()
283 assert_eq!(set.replace(1), Ok(Some(1))); in test()
284 assert_eq!(set.replace(2), Ok(None)); in test()
285 assert_eq!(set.len(), 4); in test()
287 assert_eq!(set.insert(3), Ok(true)); in test()
288 assert_eq!(set.insert(4), Ok(true)); in test()
289 assert_eq!(set.insert(7), Ok(true)); in test()
290 assert_eq!(set.insert(8), Err(InsertError)); in test()
291 assert_eq!(set.len(), 7); in test()
293 assert_eq!(set.replace(9), Err(InsertError)); in test()
295 assert_eq!(set.remove(&3), Some(3)); in test()
296 assert_eq!(set.len(), 6); in test()
298 set.retain(|x| *x == 3 || *x == 6); in test()
299 assert_eq!(set.len(), 1); in test()
300 assert!(!set.contains(&3)); in test()
301 assert!(set.contains(&6)); in test()