mlt_core/frames/v01/
compare.rs1use crate::frames::model::{EncodedUnknown, Layer, StagedLayer, Unknown};
8use crate::v01::{
9 Geometry, GeometryValues, Id, IdValues, Layer01, Property, StagedLayer01, StagedProperty,
10};
11
12impl PartialEq<IdValues> for Id<'_> {
15 fn eq(&self, other: &IdValues) -> bool {
16 match self {
17 Self::Parsed(parsed) => parsed == other,
18 Self::Raw(_) | Self::ParsingFailed => false,
19 }
20 }
21}
22
23impl PartialEq<Id<'_>> for IdValues {
24 fn eq(&self, other: &Id<'_>) -> bool {
25 other == self
26 }
27}
28
29impl PartialEq<GeometryValues> for Geometry<'_> {
32 fn eq(&self, other: &GeometryValues) -> bool {
33 match self {
34 Self::Parsed(parsed) => parsed == other,
35 Self::Raw(_) | Self::ParsingFailed => false,
36 }
37 }
38}
39
40impl PartialEq<Geometry<'_>> for GeometryValues {
41 fn eq(&self, other: &Geometry<'_>) -> bool {
42 other == self
43 }
44}
45
46impl PartialEq<StagedProperty> for Property<'_> {
49 fn eq(&self, other: &StagedProperty) -> bool {
50 match self {
51 Self::Parsed(parsed) => parsed == other,
52 Self::Raw(_) | Self::ParsingFailed => false,
53 }
54 }
55}
56
57impl PartialEq<Property<'_>> for StagedProperty {
58 fn eq(&self, other: &Property<'_>) -> bool {
59 other == self
60 }
61}
62
63impl PartialEq<StagedLayer01> for Layer01<'_> {
66 fn eq(&self, other: &StagedLayer01) -> bool {
67 let Self {
68 name,
69 extent,
70 id,
71 geometry,
72 properties,
73 #[cfg(fuzzing)]
74 layer_order: _,
75 } = self;
76 let StagedLayer01 {
77 name: other_name,
78 extent: other_extent,
79 id: other_id,
80 geometry: other_geometry,
81 properties: other_properties,
82 } = other;
83 name == other_name
84 && extent == other_extent
85 && id.as_ref().map_or(other_id.is_none(), |id| {
86 other_id.as_ref().is_some_and(|oid| id == oid)
87 })
88 && geometry == other_geometry
89 && properties.len() == other_properties.len()
90 && properties.iter().zip(other_properties).all(|(a, b)| a == b)
91 }
92}
93
94impl PartialEq<Layer01<'_>> for StagedLayer01 {
95 fn eq(&self, other: &Layer01<'_>) -> bool {
96 other == self
97 }
98}
99
100impl PartialEq<EncodedUnknown> for Unknown<'_> {
103 fn eq(&self, other: &EncodedUnknown) -> bool {
104 let Self { tag, value } = self;
105 let EncodedUnknown {
106 tag: other_tag,
107 value: other_value,
108 } = other;
109 tag == other_tag && *value == other_value.as_slice()
110 }
111}
112
113impl PartialEq<Unknown<'_>> for EncodedUnknown {
114 fn eq(&self, other: &Unknown<'_>) -> bool {
115 other == self
116 }
117}
118
119impl PartialEq<StagedLayer> for Layer<'_> {
122 fn eq(&self, other: &StagedLayer) -> bool {
123 match (self, other) {
124 (Self::Tag01(a), StagedLayer::Tag01(b)) => a == b,
125 (Self::Unknown(a), StagedLayer::Unknown(b)) => a == b,
126 _ => false,
127 }
128 }
129}
130
131impl PartialEq<Layer<'_>> for StagedLayer {
132 fn eq(&self, other: &Layer<'_>) -> bool {
133 other == self
134 }
135}