schemadoc_diff/
diff_result_type.rs

1use crate::core::DiffResult;
2
3#[derive(Debug, Copy, Clone, Eq, Hash, PartialEq)]
4pub enum DiffResultType {
5    None,
6    Same,
7    Added,
8    Updated,
9    Removed,
10}
11
12impl DiffResultType {
13    pub fn is_none(&self) -> bool {
14        matches!(self, DiffResultType::None)
15    }
16
17    pub fn is_same(&self) -> bool {
18        matches!(self, DiffResultType::Same)
19    }
20
21    pub fn is_added(&self) -> bool {
22        matches!(self, DiffResultType::Added)
23    }
24
25    pub fn is_updated(&self) -> bool {
26        matches!(self, DiffResultType::Updated)
27    }
28
29    pub fn is_removed(&self) -> bool {
30        matches!(self, DiffResultType::Removed)
31    }
32
33    pub fn is_upserted(&self) -> bool {
34        self.is_added() || self.is_updated()
35    }
36}
37
38impl<T> From<&DiffResult<T>> for DiffResultType {
39    fn from(diff: &DiffResult<T>) -> Self {
40        match diff {
41            DiffResult::None => DiffResultType::None,
42            DiffResult::Same(_) => DiffResultType::Same,
43            DiffResult::Added(_) => DiffResultType::Added,
44            DiffResult::Updated(_, _) => DiffResultType::Updated,
45            DiffResult::Removed(_) => DiffResultType::Removed,
46        }
47    }
48}
49
50impl<T> From<DiffResult<&T>> for DiffResultType {
51    fn from(diff: DiffResult<&T>) -> Self {
52        match diff {
53            DiffResult::None => DiffResultType::None,
54            DiffResult::Same(_) => DiffResultType::Same,
55            DiffResult::Added(_) => DiffResultType::Added,
56            DiffResult::Updated(_, _) => DiffResultType::Updated,
57            DiffResult::Removed(_) => DiffResultType::Removed,
58        }
59    }
60}