From c50cd54925181a05f461ea86044e19bb4611b1e9 Mon Sep 17 00:00:00 2001 From: rendo Date: Thu, 2 Apr 2026 10:26:58 +0500 Subject: [PATCH] Simplified eq of gene types --- .../src/genetics/gene/gene_types.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/rust-pvz-genetics/src/genetics/gene/gene_types.rs b/rust-pvz-genetics/src/genetics/gene/gene_types.rs index ba861e4..56a4b98 100644 --- a/rust-pvz-genetics/src/genetics/gene/gene_types.rs +++ b/rust-pvz-genetics/src/genetics/gene/gene_types.rs @@ -1,7 +1,7 @@ use crate::genetics::flow::Flow; /// GeneType is an enum that defines behaviour of gene. -#[derive(PartialEq,Eq,Clone)] +#[derive(Clone)] pub enum GeneType { /// Without functional behaviour. Doesn't pass through flow. Structural, @@ -94,3 +94,20 @@ impl GeneType { ChildDistribution::All } } + +impl PartialEq for GeneType { + fn eq(&self, other: &Self) -> bool { + match (self, other) { + (Self::PureProducer { create_flow: _ }, Self::PureProducer { create_flow: _ }) => true, + (Self::Producer { create_flow: _, modify_single: _, modify_all: _, decide_modification_type: _ }, Self::Producer { create_flow: _, modify_single: _, modify_all: _, decide_modification_type: _ }) => true, + (Self::Transport { distribute_between_children: _ }, Self::Transport { distribute_between_children: _ }) => true, + (Self::Consumer { consume: _ }, Self::Consumer { consume: _ }) => true, + (Self::Modifier { modify_flow: _ }, Self::Modifier { modify_flow: _ }) => true, + (Self::Trigger { check_trigger: _, distribute_between_children: _ }, Self::Trigger { check_trigger: _, distribute_between_children: _ }) => true, + (Self::Observer { observe: _, distribute_between_children: _ }, Self::Observer { observe: _, distribute_between_children: _ }) => true, + _ => false, + } + } +} + +impl Eq for GeneType {}