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