sorted_insert/collections/
vec_deque.rs1use core::cmp::Ordering;
2
3use std::collections::VecDeque;
4
5use crate::{SortedInsert, SortedInsertBasic, SortedInsertBy, SortedInsertByKey};
6use crate::{SortedInsertBinary, SortedInsertBinaryBy, SortedInsertBinaryByKey};
7
8impl<T> SortedInsertBasic<T> for VecDeque<T> {
9 #[inline]
10 fn insert_element(&mut self, index: usize, element: T) {
11 self.insert(index, element);
12 }
13}
14
15impl<T> SortedInsertBy<T> for VecDeque<T> {
16 #[inline]
17 fn get_sorted_insert_index_by<F: FnMut(&T) -> bool>(&self, f: F) -> usize {
18 match self.iter().rposition(f) {
19 Some(i) => i + 1,
20 None => 0,
21 }
22 }
23}
24
25impl<T> SortedInsertByKey<T> for VecDeque<T> {}
26
27impl<T: Ord> SortedInsert<T> for VecDeque<T> {}
28
29impl<T> SortedInsertBinaryBy<T> for VecDeque<T> {
30 #[inline]
31 fn get_sorted_insert_index_binary_by<F: FnMut(&T) -> Ordering>(&mut self, f: F) -> usize {
32 match self.make_contiguous().binary_search_by(f) {
33 Ok(i) => i + 1,
34 Err(i) => i,
35 }
36 }
37}
38
39impl<T> SortedInsertBinaryByKey<T> for VecDeque<T> {}
40
41impl<T: Ord> SortedInsertBinary<T> for VecDeque<T> {}