sorted_insert/arc_mutex/collections/
vec.rs1use alloc::vec::Vec;
2use core::cmp::Ordering;
3use std::sync::{Arc, Mutex};
4
5use crate::{
6 SortedInsertArcMutex, SortedInsertArcMutexBasic, SortedInsertArcMutexBy,
7 SortedInsertArcMutexByKey, SortedInsertBinaryArcMutex, SortedInsertBinaryArcMutexBy,
8 SortedInsertBinaryArcMutexByKey,
9};
10
11impl<T> SortedInsertArcMutexBasic<T> for Vec<Arc<Mutex<T>>> {
12 #[inline]
13 fn insert_element(&mut self, index: usize, element: Arc<Mutex<T>>) {
14 self.insert(index, element);
15 }
16}
17
18impl<T> SortedInsertArcMutexBy<T> for Vec<Arc<Mutex<T>>> {
19 #[inline]
20 fn get_sorted_insert_index_by<F: FnMut(&Arc<Mutex<T>>) -> bool>(&self, f: F) -> usize {
21 match self.iter().rposition(f) {
22 Some(i) => i + 1,
23 None => 0,
24 }
25 }
26}
27
28impl<T> SortedInsertArcMutexByKey<T> for Vec<Arc<Mutex<T>>> {}
29
30impl<T: Ord> SortedInsertArcMutex<T> for Vec<Arc<Mutex<T>>> {}
31
32impl<T> SortedInsertBinaryArcMutexBy<T> for Vec<Arc<Mutex<T>>> {
33 #[inline]
34 fn get_sorted_insert_index_binary_by<F: FnMut(&Arc<Mutex<T>>) -> Ordering>(
35 &mut self,
36 f: F,
37 ) -> usize {
38 match self.binary_search_by(f) {
39 Ok(i) => i + 1,
40 Err(i) => i,
41 }
42 }
43}
44
45impl<T> SortedInsertBinaryArcMutexByKey<T> for Vec<Arc<Mutex<T>>> {}
46
47impl<T: Ord> SortedInsertBinaryArcMutex<T> for Vec<Arc<Mutex<T>>> {}