diffus/edit/
enm.rs

1#[cfg_attr(feature = "serialize-impl", derive(serde::Serialize))]
2#[derive(Debug, Eq, PartialEq)]
3pub enum Edit<'a, T: ?Sized, Diff> {
4    Copy(&'a T),
5    VariantChanged(&'a T, &'a T),
6    AssociatedChanged(Diff),
7}
8
9impl<'a, T: ?Sized, Diff> Edit<'a, T, Diff> {
10    pub fn is_copy(&self) -> bool {
11        if let Self::Copy(_) = self {
12            true
13        } else {
14            false
15        }
16    }
17
18    pub fn is_variant_changed(&self) -> bool {
19        if let Self::VariantChanged(_, _) = self {
20            true
21        } else {
22            false
23        }
24    }
25
26    pub fn is_associated_changed(&self) -> bool {
27        if let Self::AssociatedChanged(_) = self {
28            true
29        } else {
30            false
31        }
32    }
33
34    pub fn variant_changed(&self) -> Option<(&'a T, &'a T)> {
35        if let Self::VariantChanged(left, right) = self {
36            Some((left, right))
37        } else {
38            None
39        }
40    }
41
42    pub fn associated_change(&self) -> Option<&Diff> {
43        if let Self::AssociatedChanged(value) = self {
44            Some(value)
45        } else {
46            None
47        }
48    }
49}