Skip to main content

clt_database/alloc/collections/
vec_deque.rs

1use super::{TursoAllocExt, TursoFromIterator, TursoTryWithCapacityExt, TursoVecDequeExt};
2use crate::alloc::{TryReserveError, VecDeque};
3
4const fn vec_deque<T>() -> VecDeque<T> {
5    std::collections::VecDeque::new()
6}
7
8fn vec_deque_with_capacity<T>(capacity: usize) -> VecDeque<T> {
9    std::collections::VecDeque::with_capacity(capacity)
10}
11
12impl<T> TursoAllocExt for VecDeque<T> {
13    #[inline(always)]
14    fn new() -> Self {
15        vec_deque()
16    }
17}
18
19impl<T> TursoVecDequeExt<T> for VecDeque<T> {
20    #[inline(always)]
21    fn try_push_back(&mut self, value: T) -> Result<(), TryReserveError> {
22        self.push_back(value);
23        Ok(())
24    }
25
26    #[inline(always)]
27    fn try_push_front(&mut self, value: T) -> Result<(), TryReserveError> {
28        self.push_front(value);
29        Ok(())
30    }
31}
32
33impl<T> TursoTryWithCapacityExt for VecDeque<T> {
34    #[inline(always)]
35    fn try_with_capacity_ext(capacity: usize) -> Result<Self, TryReserveError> {
36        Ok(vec_deque_with_capacity(capacity))
37    }
38}
39
40impl<T> TursoFromIterator<T> for VecDeque<T> {
41    #[inline(always)]
42    fn try_from_iter<I>(iter: I) -> Result<Self, TryReserveError>
43    where
44        I: IntoIterator<Item = T>,
45    {
46        Ok(iter.into_iter().collect())
47    }
48
49    #[inline(always)]
50    fn try_extend<I>(&mut self, iter: I) -> Result<(), TryReserveError>
51    where
52        I: IntoIterator<Item = T>,
53    {
54        self.extend(iter);
55        Ok(())
56    }
57}