Skip to content

Commit 070acea

Browse files
committed
Fix Visitor trait fn order & "Nil" str deserialization
1 parent 57891d5 commit 070acea

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

gdnative-core/src/core_types/variant.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2187,6 +2187,10 @@ pub mod serde {
21872187
where
21882188
E: Error,
21892189
{
2190+
if v == "Nil" {
2191+
//`VariantDispatch::Nil` could be represented as the string "Nil"
2192+
return Ok(Variant::new())
2193+
}
21902194
Ok(v.to_variant())
21912195
}
21922196

@@ -2220,7 +2224,14 @@ pub mod serde {
22202224
{
22212225
Ok(().to_variant())
22222226
}
2223-
2227+
2228+
fn visit_newtype_struct<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
2229+
where
2230+
D: Deserializer<'de>,
2231+
{
2232+
deserializer.deserialize_any(VariantVisitor)
2233+
}
2234+
22242235
fn visit_seq<A>(self, seq: A) -> Result<Self::Value, <A as SeqAccess<'de>>::Error>
22252236
where
22262237
A: SeqAccess<'de>,
@@ -2230,7 +2241,7 @@ pub mod serde {
22302241
.visit_seq(seq)
22312242
.map(VariantArray::<Unique>::owned_to_variant)
22322243
}
2233-
2244+
22342245
fn visit_map<A>(self, map: A) -> Result<Self::Value, <A as MapAccess<'de>>::Error>
22352246
where
22362247
A: MapAccess<'de>,
@@ -2395,13 +2406,6 @@ pub mod serde {
23952406

23962407
Ok(dict.owned_to_variant())
23972408
}
2398-
2399-
fn visit_newtype_struct<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
2400-
where
2401-
D: Deserializer<'de>,
2402-
{
2403-
deserializer.deserialize_any(VariantVisitor)
2404-
}
24052409
}
24062410

24072411
impl<'de> Deserialize<'de> for Variant {

0 commit comments

Comments
 (0)