Skip to main content

luminos_contracts/support/interacts_with_data/contains/
vec_deque.rs

1use std::collections::VecDeque;
2
3use super::super::{Contains, InteractsWithData, IntoData};
4
5impl<T: PartialEq> Contains<T> for VecDeque<T> {
6    fn contains_item(&self, item: &T) -> bool {
7        self.contains(item)
8    }
9}
10
11impl<T: Clone + PartialEq> InteractsWithData for VecDeque<T> {
12    type Value = VecDeque<T>;
13    type Item = T;
14
15    fn data(&self) -> &Self::Value {
16        self
17    }
18}
19
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24    use std::collections::VecDeque;
25
26    #[test]
27    fn test_vecdeque_interacts_with_data() {
28        let mut deque = VecDeque::new();
29        deque.push_back(10);
30        deque.push_back(20);
31        deque.push_back(30);
32
33        // Check all()
34        let expected: VecDeque<_> = vec![10, 20, 30].into_iter().collect();
35        assert_eq!(deque.all(), expected);
36
37        // Check exists()
38        assert!(deque.exists(&20)); // true
39        assert!(!deque.exists(&99)); // false
40    }
41}