1use crate::Diffable;
2
3#[cfg_attr(feature = "serialize-impl", derive(serde::Serialize))]
4#[derive(Debug, PartialEq)]
5pub enum Edit<'a, T: Diffable<'a> + ?Sized> {
6 Copy(&'a T),
7 Insert(&'a T),
8 Remove(&'a T),
9}
10
11impl<'a, T: Diffable<'a> + ?Sized> Edit<'a, T> {
12 pub fn is_copy(&self) -> bool {
13 if let Self::Copy(_) = self {
14 true
15 } else {
16 false
17 }
18 }
19 pub fn is_insert(&self) -> bool {
29 if let Self::Insert(_) = self {
30 true
31 } else {
32 false
33 }
34 }
35 pub fn is_remove(&self) -> bool {
36 if let Self::Remove(_) = self {
37 true
38 } else {
39 false
40 }
41 }
42 pub fn copy(&self) -> Option<&'a T> {
43 if let Self::Copy(value) = self {
44 Some(value)
45 } else {
46 None
47 }
48 }
49 pub fn insert(&self) -> Option<&'a T> {
50 if let Self::Insert(value) = self {
51 Some(value)
52 } else {
53 None
54 }
55 }
56 pub fn remove(&self) -> Option<&'a T> {
57 if let Self::Remove(value) = self {
58 Some(value)
59 } else {
60 None
61 }
62 }
63}