s2json_core/geometry/
impls.rs1use crate::*;
2
3#[doc(hidden)]
5#[allow(unused_extern_crates, clippy::useless_attribute)]
6extern crate serde as _serde;
7#[automatically_derived]
8impl<'de, M: Clone + Default> _serde::Deserialize<'de> for Geometry<M>
10where
11 M: _serde::Deserialize<'de>,
12{
13 fn deserialize<__D>(__deserializer: __D) -> _serde::__private::Result<Self, __D::Error>
14 where
15 __D: _serde::Deserializer<'de>,
16 {
17 let __content =
18 <_serde::__private::de::Content as _serde::Deserialize>::deserialize(__deserializer)?;
19 let __deserializer =
20 _serde::__private::de::ContentRefDeserializer::<__D::Error>::new(&__content);
21 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
22 <PointGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
23 Geometry::Point,
24 ) {
25 return _serde::__private::Ok(__ok);
26 }
27 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
29 <MultiPointGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
30 Geometry::MultiPoint,
31 ) {
32 if let Geometry::MultiPoint(multipoint) = &__ok {
34 if multipoint._type == GeometryType::LineString {
35 if let _serde::__private::Ok(__ok2) = _serde::__private::Result::map(
37 <LineStringGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
38 Geometry::LineString,
39 ) {
40 return _serde::__private::Ok(__ok2);
42 }
43 }
44 }
45 return _serde::__private::Ok(__ok);
46 }
47 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
48 <MultiLineStringGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
49 Geometry::MultiLineString,
50 ) {
51 if let Geometry::MultiLineString(multilinestring) = &__ok {
53 if multilinestring._type == GeometryType::Polygon {
54 if let _serde::__private::Ok(__ok2) = _serde::__private::Result::map(
55 <PolygonGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
56 Geometry::Polygon,
57 ) {
58 return _serde::__private::Ok(__ok2);
59 }
60 }
61 }
62 return _serde::__private::Ok(__ok);
63 }
64 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
65 <MultiPolygonGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
66 Geometry::MultiPolygon,
67 ) {
68 return _serde::__private::Ok(__ok);
69 }
70 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
71 <Point3DGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
72 Geometry::Point3D,
73 ) {
74 return _serde::__private::Ok(__ok);
75 }
76 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
77 <MultiPoint3DGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
78 Geometry::MultiPoint3D,
79 ) {
80 if let Geometry::MultiPoint3D(multipoint3d) = &__ok {
82 if multipoint3d._type == GeometryType::LineString3D {
83 if let _serde::__private::Ok(__ok2) = _serde::__private::Result::map(
84 <LineString3DGeometry<M> as _serde::Deserialize>::deserialize(
85 __deserializer,
86 ),
87 Geometry::LineString3D,
88 ) {
89 return _serde::__private::Ok(__ok2);
90 }
91 }
92 }
93 return _serde::__private::Ok(__ok);
94 }
95 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
96 <MultiLineString3DGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
97 Geometry::MultiLineString3D,
98 ) {
99 if let Geometry::MultiLineString3D(multilinestring3d) = &__ok {
101 if multilinestring3d._type == GeometryType::Polygon3D {
102 if let _serde::__private::Ok(__ok2) = _serde::__private::Result::map(
103 <Polygon3DGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
104 Geometry::Polygon3D,
105 ) {
106 return _serde::__private::Ok(__ok2);
107 }
108 }
109 }
110 return _serde::__private::Ok(__ok);
111 }
112 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
113 <MultiPolygon3DGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
114 Geometry::MultiPolygon3D,
115 ) {
116 return _serde::__private::Ok(__ok);
117 }
118 _serde::__private::Err(_serde::de::Error::custom(
119 "data did not match any variant of untagged enum Geometry",
120 ))
121 }
122}
123
124#[doc(hidden)]
125#[allow(unused_extern_crates, clippy::useless_attribute)]
126#[automatically_derived]
127impl<'de, M: Clone + Default> _serde::Deserialize<'de> for VectorGeometry<M>
129where
130 M: _serde::Deserialize<'de>,
131{
132 fn deserialize<__D>(__deserializer: __D) -> _serde::__private::Result<Self, __D::Error>
133 where
134 __D: _serde::Deserializer<'de>,
135 {
136 let __content =
137 <_serde::__private::de::Content as _serde::Deserialize>::deserialize(__deserializer)?;
138 let __deserializer =
139 _serde::__private::de::ContentRefDeserializer::<__D::Error>::new(&__content);
140 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
141 <VectorPointGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
142 VectorGeometry::Point,
143 ) {
144 return _serde::__private::Ok(__ok);
145 }
146 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
148 <VectorMultiPointGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
149 VectorGeometry::MultiPoint,
150 ) {
151 if let VectorGeometry::MultiPoint(multipoint) = &__ok {
153 if multipoint._type == VectorGeometryType::LineString {
154 if let _serde::__private::Ok(__ok2) = _serde::__private::Result::map(
156 <VectorLineStringGeometry<M> as _serde::Deserialize>::deserialize(
157 __deserializer,
158 ),
159 VectorGeometry::LineString,
160 ) {
161 return _serde::__private::Ok(__ok2);
163 }
164 }
165 }
166 return _serde::__private::Ok(__ok);
167 }
168 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
170 <VectorMultiLineStringGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
171 VectorGeometry::MultiLineString,
172 ) {
173 if let VectorGeometry::MultiLineString(multilinestring) = &__ok {
175 if multilinestring._type == VectorGeometryType::Polygon {
176 if let _serde::__private::Ok(__ok2) = _serde::__private::Result::map(
178 <VectorPolygonGeometry<M> as _serde::Deserialize>::deserialize(
179 __deserializer,
180 ),
181 VectorGeometry::Polygon,
182 ) {
183 return _serde::__private::Ok(__ok2);
185 }
186 }
187 }
188 return _serde::__private::Ok(__ok);
189 }
190 if let _serde::__private::Ok(__ok) = _serde::__private::Result::map(
191 <VectorMultiPolygonGeometry<M> as _serde::Deserialize>::deserialize(__deserializer),
192 VectorGeometry::MultiPolygon,
193 ) {
194 return _serde::__private::Ok(__ok);
195 }
196 _serde::__private::Err(_serde::de::Error::custom(
197 "data did not match any variant of untagged enum VectorGeometry",
198 ))
199 }
200}