@@ -2026,172 +2026,50 @@ pub mod serde {
20262026 where
20272027 S : Serializer ,
20282028 {
2029+ use VariantDispatch :: * ;
2030+ macro_rules! newtype_variant {
2031+ ( $t: expr, $v: expr) => {
2032+ ser. serialize_newtype_variant( "VariantDispatch" , $t as u32 , $t. name( ) , $v)
2033+ } ;
2034+ }
20292035 match self {
2030- VariantDispatch :: Nil => ser. serialize_unit_variant (
2036+ Nil => ser. serialize_unit_variant (
20312037 "VariantDispatch" ,
20322038 VariantType :: Nil as u32 ,
20332039 VariantType :: Nil . name ( ) ,
20342040 ) ,
2035- VariantDispatch :: Bool ( v) => ser. serialize_newtype_variant (
2036- "VariantDispatch" ,
2037- VariantType :: Bool as u32 ,
2038- VariantType :: Bool . name ( ) ,
2039- v,
2040- ) ,
2041- VariantDispatch :: I64 ( v) => ser. serialize_newtype_variant (
2042- "VariantDispatch" ,
2043- VariantType :: I64 as u32 ,
2044- VariantType :: I64 . name ( ) ,
2045- v,
2046- ) ,
2047- VariantDispatch :: F64 ( v) => ser. serialize_newtype_variant (
2048- "VariantDispatch" ,
2049- VariantType :: F64 as u32 ,
2050- VariantType :: F64 . name ( ) ,
2051- v,
2052- ) ,
2053- VariantDispatch :: GodotString ( v) => ser. serialize_newtype_variant (
2054- "VariantDispatch" ,
2055- VariantType :: GodotString as u32 ,
2056- VariantType :: GodotString . name ( ) ,
2057- v,
2058- ) ,
2059- VariantDispatch :: Vector2 ( v) => ser. serialize_newtype_variant (
2060- "VariantDispatch" ,
2061- VariantType :: Vector2 as u32 ,
2062- VariantType :: Vector2 . name ( ) ,
2063- v,
2064- ) ,
2065- VariantDispatch :: Rect2 ( v) => ser. serialize_newtype_variant (
2066- "VariantDispatch" ,
2067- VariantType :: Rect2 as u32 ,
2068- VariantType :: Rect2 . name ( ) ,
2069- v,
2070- ) ,
2071- VariantDispatch :: Vector3 ( v) => ser. serialize_newtype_variant (
2072- "VariantDispatch" ,
2073- VariantType :: Vector3 as u32 ,
2074- VariantType :: Vector3 . name ( ) ,
2075- v,
2076- ) ,
2077- VariantDispatch :: Transform2D ( v) => ser. serialize_newtype_variant (
2078- "VariantDispatch" ,
2079- VariantType :: Transform2D as u32 ,
2080- VariantType :: Transform2D . name ( ) ,
2081- v,
2082- ) ,
2083- VariantDispatch :: Plane ( v) => ser. serialize_newtype_variant (
2084- "VariantDispatch" ,
2085- VariantType :: Plane as u32 ,
2086- VariantType :: Plane . name ( ) ,
2087- v,
2088- ) ,
2089- VariantDispatch :: Quat ( v) => ser. serialize_newtype_variant (
2090- "VariantDispatch" ,
2091- VariantType :: Quat as u32 ,
2092- VariantType :: Quat . name ( ) ,
2093- v,
2094- ) ,
2095- VariantDispatch :: Aabb ( v) => ser. serialize_newtype_variant (
2096- "VariantDispatch" ,
2097- VariantType :: Aabb as u32 ,
2098- VariantType :: Aabb . name ( ) ,
2099- v,
2100- ) ,
2101- VariantDispatch :: Basis ( v) => ser. serialize_newtype_variant (
2102- "VariantDispatch" ,
2103- VariantType :: Basis as u32 ,
2104- VariantType :: Basis . name ( ) ,
2105- v,
2106- ) ,
2107- VariantDispatch :: Transform ( v) => ser. serialize_newtype_variant (
2108- "VariantDispatch" ,
2109- VariantType :: Transform as u32 ,
2110- VariantType :: Transform . name ( ) ,
2111- v,
2112- ) ,
2113- VariantDispatch :: Color ( v) => ser. serialize_newtype_variant (
2114- "VariantDispatch" ,
2115- VariantType :: Color as u32 ,
2116- VariantType :: Color . name ( ) ,
2117- v,
2118- ) ,
2119- VariantDispatch :: NodePath ( v) => ser. serialize_newtype_variant (
2120- "VariantDispatch" ,
2121- VariantType :: NodePath as u32 ,
2122- VariantType :: NodePath . name ( ) ,
2123- v,
2124- ) ,
2125- VariantDispatch :: Rid ( v) => ser. serialize_newtype_variant (
2126- "VariantDispatch" ,
2127- VariantType :: Rid as u32 ,
2128- VariantType :: Rid . name ( ) ,
2129- v,
2130- ) ,
2131- VariantDispatch :: Object ( _) => ser. serialize_newtype_variant (
2132- "VariantDispatch" ,
2133- VariantType :: Object as u32 ,
2134- VariantType :: Object . name ( ) ,
2135- & Option :: < ( ) > :: None ,
2136- ) ,
2137- VariantDispatch :: Dictionary ( v) => ser. serialize_newtype_variant (
2138- "VariantDispatch" ,
2139- VariantType :: Dictionary as u32 ,
2140- VariantType :: Dictionary . name ( ) ,
2141- & DictionaryDispatch ( v. new_ref ( ) ) ,
2142- ) ,
2143- VariantDispatch :: VariantArray ( v) => {
2041+ Bool ( v) => newtype_variant ! ( VariantType :: Bool , v) ,
2042+ I64 ( v) => newtype_variant ! ( VariantType :: I64 , v) ,
2043+ F64 ( v) => newtype_variant ! ( VariantType :: F64 , v) ,
2044+ GodotString ( v) => newtype_variant ! ( VariantType :: GodotString , v) ,
2045+ Vector2 ( v) => newtype_variant ! ( VariantType :: Vector2 , v) ,
2046+ Rect2 ( v) => newtype_variant ! ( VariantType :: Rect2 , v) ,
2047+ Vector3 ( v) => newtype_variant ! ( VariantType :: Vector3 , v) ,
2048+ Transform2D ( v) => newtype_variant ! ( VariantType :: Transform2D , v) ,
2049+ Plane ( v) => newtype_variant ! ( VariantType :: Plane , v) ,
2050+ Quat ( v) => newtype_variant ! ( VariantType :: Quat , v) ,
2051+ Aabb ( v) => newtype_variant ! ( VariantType :: Aabb , v) ,
2052+ Basis ( v) => newtype_variant ! ( VariantType :: Basis , v) ,
2053+ Transform ( v) => newtype_variant ! ( VariantType :: Transform , v) ,
2054+ Color ( v) => newtype_variant ! ( VariantType :: Color , v) ,
2055+ NodePath ( v) => newtype_variant ! ( VariantType :: NodePath , v) ,
2056+ Rid ( v) => newtype_variant ! ( VariantType :: Rid , v) ,
2057+ Object ( _) => {
2058+ newtype_variant ! ( VariantType :: Object , & Option :: <( ) >:: None )
2059+ }
2060+ Dictionary ( v) => newtype_variant ! ( VariantType :: Dictionary , v) ,
2061+ VariantArray ( v) => {
21442062 //Allows serializing to non-self-describing formats by avoiding serializing `Variant`s
21452063 let vec = v. iter ( ) . map ( |v| v. dispatch ( ) ) . collect :: < Vec < _ > > ( ) ;
2146- ser. serialize_newtype_variant (
2147- "VariantDispatch" ,
2148- VariantType :: VariantArray as u32 ,
2149- VariantType :: VariantArray . name ( ) ,
2150- & vec,
2151- )
2064+ newtype_variant ! ( VariantType :: VariantArray , & vec)
21522065 }
2153- VariantDispatch :: ByteArray ( v) => ser. serialize_newtype_variant (
2154- "VariantDispatch" ,
2155- VariantType :: ByteArray as u32 ,
2156- VariantType :: ByteArray . name ( ) ,
2157- v,
2158- ) ,
2159- VariantDispatch :: Int32Array ( v) => ser. serialize_newtype_variant (
2160- "VariantDispatch" ,
2161- VariantType :: Int32Array as u32 ,
2162- VariantType :: Int32Array . name ( ) ,
2163- v,
2164- ) ,
2165- VariantDispatch :: Float32Array ( v) => ser. serialize_newtype_variant (
2166- "VariantDispatch" ,
2167- VariantType :: Float32Array as u32 ,
2168- VariantType :: Float32Array . name ( ) ,
2169- v,
2170- ) ,
2171- VariantDispatch :: StringArray ( v) => ser. serialize_newtype_variant (
2172- "VariantDispatch" ,
2173- VariantType :: StringArray as u32 ,
2174- VariantType :: StringArray . name ( ) ,
2175- v,
2176- ) ,
2177- VariantDispatch :: Vector2Array ( v) => ser. serialize_newtype_variant (
2178- "VariantDispatch" ,
2179- VariantType :: Vector2Array as u32 ,
2180- VariantType :: Vector2Array . name ( ) ,
2181- v,
2182- ) ,
2183- VariantDispatch :: Vector3Array ( v) => ser. serialize_newtype_variant (
2184- "VariantDispatch" ,
2185- VariantType :: Vector3Array as u32 ,
2186- VariantType :: Vector3Array . name ( ) ,
2187- v,
2188- ) ,
2189- VariantDispatch :: ColorArray ( v) => ser. serialize_newtype_variant (
2190- "VariantDispatch" ,
2191- VariantType :: ColorArray as u32 ,
2192- VariantType :: ColorArray . name ( ) ,
2193- v,
2194- ) ,
2066+ ByteArray ( v) => newtype_variant ! ( VariantType :: ByteArray , v) ,
2067+ Int32Array ( v) => newtype_variant ! ( VariantType :: Int32Array , v) ,
2068+ Float32Array ( v) => newtype_variant ! ( VariantType :: Float32Array , v) ,
2069+ StringArray ( v) => newtype_variant ! ( VariantType :: StringArray , v) ,
2070+ Vector2Array ( v) => newtype_variant ! ( VariantType :: Vector2Array , v) ,
2071+ Vector3Array ( v) => newtype_variant ! ( VariantType :: Vector3Array , v) ,
2072+ ColorArray ( v) => newtype_variant ! ( VariantType :: ColorArray , v) ,
21952073 }
21962074 }
21972075 }
@@ -2208,76 +2086,49 @@ pub mod serde {
22082086 where
22092087 A : EnumAccess < ' de > ,
22102088 {
2211- let val = data. variant ( ) ?;
2212- Ok ( match val {
2213- ( VariantType :: Nil , variant ) => {
2214- variant . unit_variant ( ) ?;
2089+ let ( t , v ) = data. variant ( ) ?;
2090+ Ok ( match t {
2091+ VariantType :: Nil => {
2092+ v . unit_variant ( ) ?;
22152093 VariantDispatch :: Nil
22162094 }
2217- ( VariantType :: Bool , variant) => VariantDispatch :: Bool ( variant. newtype_variant ( ) ?) ,
2218- ( VariantType :: I64 , variant) => VariantDispatch :: I64 ( variant. newtype_variant ( ) ?) ,
2219- ( VariantType :: F64 , variant) => VariantDispatch :: F64 ( variant. newtype_variant ( ) ?) ,
2220- ( VariantType :: GodotString , variant) => {
2221- VariantDispatch :: GodotString ( variant. newtype_variant ( ) ?)
2222- }
2223- ( VariantType :: Vector2 , variant) => {
2224- VariantDispatch :: Vector2 ( variant. newtype_variant ( ) ?)
2225- }
2226- ( VariantType :: Rect2 , variant) => VariantDispatch :: Rect2 ( variant. newtype_variant ( ) ?) ,
2227- ( VariantType :: Vector3 , variant) => {
2228- VariantDispatch :: Vector3 ( variant. newtype_variant ( ) ?)
2229- }
2230- ( VariantType :: Transform2D , variant) => {
2231- VariantDispatch :: Transform2D ( variant. newtype_variant ( ) ?)
2232- }
2233- ( VariantType :: Plane , variant) => VariantDispatch :: Plane ( variant. newtype_variant ( ) ?) ,
2234- ( VariantType :: Quat , variant) => VariantDispatch :: Quat ( variant. newtype_variant ( ) ?) ,
2235- ( VariantType :: Aabb , variant) => VariantDispatch :: Aabb ( variant. newtype_variant ( ) ?) ,
2236- ( VariantType :: Basis , variant) => VariantDispatch :: Basis ( variant. newtype_variant ( ) ?) ,
2237- ( VariantType :: Transform , variant) => {
2238- VariantDispatch :: Transform ( variant. newtype_variant ( ) ?)
2239- }
2240- ( VariantType :: Color , variant) => VariantDispatch :: Color ( variant. newtype_variant ( ) ?) ,
2241- ( VariantType :: NodePath , variant) => {
2242- VariantDispatch :: NodePath ( variant. newtype_variant ( ) ?)
2243- }
2244- ( VariantType :: Rid , variant) => VariantDispatch :: Rid ( variant. newtype_variant ( ) ?) ,
2245- ( VariantType :: Object , variant) => {
2095+ VariantType :: Bool => VariantDispatch :: Bool ( v. newtype_variant ( ) ?) ,
2096+ VariantType :: I64 => VariantDispatch :: I64 ( v. newtype_variant ( ) ?) ,
2097+ VariantType :: F64 => VariantDispatch :: F64 ( v. newtype_variant ( ) ?) ,
2098+ VariantType :: GodotString => VariantDispatch :: GodotString ( v. newtype_variant ( ) ?) ,
2099+ VariantType :: Vector2 => VariantDispatch :: Vector2 ( v. newtype_variant ( ) ?) ,
2100+ VariantType :: Rect2 => VariantDispatch :: Rect2 ( v. newtype_variant ( ) ?) ,
2101+ VariantType :: Vector3 => VariantDispatch :: Vector3 ( v. newtype_variant ( ) ?) ,
2102+ VariantType :: Transform2D => VariantDispatch :: Transform2D ( v. newtype_variant ( ) ?) ,
2103+ VariantType :: Plane => VariantDispatch :: Plane ( v. newtype_variant ( ) ?) ,
2104+ VariantType :: Quat => VariantDispatch :: Quat ( v. newtype_variant ( ) ?) ,
2105+ VariantType :: Aabb => VariantDispatch :: Aabb ( v. newtype_variant ( ) ?) ,
2106+ VariantType :: Basis => VariantDispatch :: Basis ( v. newtype_variant ( ) ?) ,
2107+ VariantType :: Transform => VariantDispatch :: Transform ( v. newtype_variant ( ) ?) ,
2108+ VariantType :: Color => VariantDispatch :: Color ( v. newtype_variant ( ) ?) ,
2109+ VariantType :: NodePath => VariantDispatch :: NodePath ( v. newtype_variant ( ) ?) ,
2110+ VariantType :: Rid => VariantDispatch :: Rid ( v. newtype_variant ( ) ?) ,
2111+ VariantType :: Object => {
22462112 // should return None
2247- VariantDispatch :: Object ( variant . newtype_variant :: < Option < ( ) > > ( ) ?. to_variant ( ) )
2113+ VariantDispatch :: Object ( v . newtype_variant :: < Option < ( ) > > ( ) ?. to_variant ( ) )
22482114 }
2249- ( VariantType :: Dictionary , variant ) => {
2250- VariantDispatch :: Dictionary ( variant . newtype_variant :: < DictionaryDispatch > ( ) ?. 0 )
2115+ VariantType :: Dictionary => {
2116+ VariantDispatch :: Dictionary ( v . newtype_variant :: < DictionaryDispatch > ( ) ?. 0 )
22512117 }
2252- ( VariantType :: VariantArray , variant) => VariantDispatch :: VariantArray (
2253- variant
2254- . newtype_variant :: < Vec < VariantDispatch > > ( ) ?
2118+ VariantType :: VariantArray => VariantDispatch :: VariantArray (
2119+ v. newtype_variant :: < Vec < VariantDispatch > > ( ) ?
22552120 . iter ( )
22562121 . map ( Into :: < Variant > :: into)
22572122 . collect :: < VariantArray < Unique > > ( )
22582123 . into_shared ( ) ,
22592124 ) ,
2260- ( VariantType :: ByteArray , variant) => {
2261- VariantDispatch :: ByteArray ( variant. newtype_variant ( ) ?)
2262- }
2263- ( VariantType :: Int32Array , variant) => {
2264- VariantDispatch :: Int32Array ( variant. newtype_variant ( ) ?)
2265- }
2266- ( VariantType :: Float32Array , variant) => {
2267- VariantDispatch :: Float32Array ( variant. newtype_variant ( ) ?)
2268- }
2269- ( VariantType :: StringArray , variant) => {
2270- VariantDispatch :: StringArray ( variant. newtype_variant ( ) ?)
2271- }
2272- ( VariantType :: Vector2Array , variant) => {
2273- VariantDispatch :: Vector2Array ( variant. newtype_variant ( ) ?)
2274- }
2275- ( VariantType :: Vector3Array , variant) => {
2276- VariantDispatch :: Vector3Array ( variant. newtype_variant ( ) ?)
2277- }
2278- ( VariantType :: ColorArray , variant) => {
2279- VariantDispatch :: ColorArray ( variant. newtype_variant ( ) ?)
2280- }
2125+ VariantType :: ByteArray => VariantDispatch :: ByteArray ( v. newtype_variant ( ) ?) ,
2126+ VariantType :: Int32Array => VariantDispatch :: Int32Array ( v. newtype_variant ( ) ?) ,
2127+ VariantType :: Float32Array => VariantDispatch :: Float32Array ( v. newtype_variant ( ) ?) ,
2128+ VariantType :: StringArray => VariantDispatch :: StringArray ( v. newtype_variant ( ) ?) ,
2129+ VariantType :: Vector2Array => VariantDispatch :: Vector2Array ( v. newtype_variant ( ) ?) ,
2130+ VariantType :: Vector3Array => VariantDispatch :: Vector3Array ( v. newtype_variant ( ) ?) ,
2131+ VariantType :: ColorArray => VariantDispatch :: ColorArray ( v. newtype_variant ( ) ?) ,
22812132 } )
22822133 }
22832134 }
0 commit comments