schemadoc_diff/
diff_result_type.rs1use 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}