vertigo/computed/struct_mut/
vec_deque_mut.rs1use std::collections::VecDeque;
2
3use super::inner_value::InnerValue;
4
5pub struct VecDequeMut<V> {
6 data: InnerValue<VecDeque<V>>,
7}
8
9impl<V> Default for VecDequeMut<V> {
10 fn default() -> Self {
11 Self::new()
12 }
13}
14
15impl<V> VecDequeMut<V> {
16 pub fn new() -> VecDequeMut<V> {
17 VecDequeMut {
18 data: InnerValue::new(VecDeque::new()),
19 }
20 }
21
22 pub fn push(&self, value: V) {
23 let state = self.data.get_mut();
24 state.push_back(value);
25 }
26
27 pub fn push_back(&self, value: V) {
28 let state = self.data.get_mut();
29 state.push_back(value);
30 }
31
32 pub fn pop_back(&self) -> Option<V> {
33 let state = self.data.get_mut();
34 state.pop_back()
35 }
36
37 pub fn take(&self) -> VecDeque<V> {
38 let state = self.data.get_mut();
39 std::mem::take(state)
40 }
41
42 pub fn replace(&self, child: VecDeque<V>) -> VecDeque<V> {
43 let state = self.data.get_mut();
44 std::mem::replace(state, child)
45 }
46
47 pub fn is_empty(&self) -> bool {
48 let state = self.data.get();
49 state.is_empty()
50 }
51
52 pub fn len(&self) -> usize {
53 let state = self.data.get();
54 state.len()
55 }
56
57 pub fn get_mut(&self, index: usize, callback: impl Fn(Option<&mut V>)) {
58 let state = self.data.get_mut();
59 let value = state.get_mut(index);
60 callback(value);
61 }
62}