Skip to content

Commit fa59997

Browse files
committed
Fix Visitor trait fn order & "Nil" str deserialization
1 parent d46eb1c commit fa59997

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
@@ -2186,6 +2186,10 @@ pub mod serde {
21862186
where
21872187
E: Error,
21882188
{
2189+
if v == "Nil" {
2190+
//`VariantDispatch::Nil` could be represented as the string "Nil"
2191+
return Ok(Variant::new())
2192+
}
21892193
Ok(v.to_variant())
21902194
}
21912195

@@ -2219,7 +2223,14 @@ pub mod serde {
22192223
{
22202224
Ok(().to_variant())
22212225
}
2222-
2226+
2227+
fn visit_newtype_struct<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
2228+
where
2229+
D: Deserializer<'de>,
2230+
{
2231+
deserializer.deserialize_any(VariantVisitor)
2232+
}
2233+
22232234
fn visit_seq<A>(self, seq: A) -> Result<Self::Value, <A as SeqAccess<'de>>::Error>
22242235
where
22252236
A: SeqAccess<'de>,
@@ -2229,7 +2240,7 @@ pub mod serde {
22292240
.visit_seq(seq)
22302241
.map(VariantArray::<Unique>::owned_to_variant)
22312242
}
2232-
2243+
22332244
fn visit_map<A>(self, map: A) -> Result<Self::Value, <A as MapAccess<'de>>::Error>
22342245
where
22352246
A: MapAccess<'de>,
@@ -2394,13 +2405,6 @@ pub mod serde {
23942405

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

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

0 commit comments

Comments
 (0)