luminos_contracts/support/interacts_with_data/contains/
result.rs1use std::result::Result;
2
3use super::super::{Contains, InteractsWithData, IntoData};
4
5impl<T, E> Contains<T> for Result<T, E> {
6 fn contains_item(&self, key: &T) -> bool {
7 self.is_ok()
8 }
9}
10
11impl<T: PartialEq, E> InteractsWithData for Result<T, E> {
12 type Value = Result<T, E>;
13 type Item = T;
14
15 fn data(&self) -> &Self::Value {
16 self
17 }
18
19 fn exists(&self, key: &Self::Item) -> bool {
20 match self.data() {
21 Ok(value) => value == key,
22 _ => false,
23 }
24 }
25}
26
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31
32 #[test]
33 fn test_result_interacts_with_data() {
34 let result: Result<&str, ()> = Ok("a");
35
36 let expected: Result<&str, ()> = Ok("a");
37 assert_eq!(result.all(), expected);
38
39 assert!(result.exists(&"a"));
40 assert!(!result.exists(&"c"));
41 }
42}