diff --git a/src/action.rs b/src/action.rs index 394b4e1..ca5e61c 100644 --- a/src/action.rs +++ b/src/action.rs @@ -44,7 +44,7 @@ impl FromStr for ActionType { #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub struct ActionID(pub(crate) i64); -#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize)] +#[derive(Debug, Clone, Eq, PartialOrd, Ord, Serialize)] pub struct Action { #[serde(skip)] pub(crate) id: Option, @@ -70,6 +70,20 @@ impl Action { } } +impl PartialEq for Action { + fn eq(&self, other: &Self) -> bool { + let id_comp = match (self.id, other.id) { + (Some(self_id), Some(other_id)) => self_id == other_id, + _ => true, + }; + + id_comp + && self.device_id == other.device_id + && self.action_type == other.action_type + && self.parameter == other.parameter + } +} + #[derive(Debug, Default, Clone, PartialEq, Eq, Serialize)] pub struct ActionSet { actions: Vec,