luminos_contracts/support/interacts_with_data/contains/
vec_deque.rs1use 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 let expected: VecDeque<_> = vec![10, 20, 30].into_iter().collect();
35 assert_eq!(deque.all(), expected);
36
37 assert!(deque.exists(&20)); assert!(!deque.exists(&99)); }
41}