@@ -2025,172 +2025,50 @@ pub mod serde {
2025
2025
where
2026
2026
S : Serializer ,
2027
2027
{
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
+ }
2028
2034
match self {
2029
- VariantDispatch :: Nil => ser. serialize_unit_variant (
2035
+ Nil => ser. serialize_unit_variant (
2030
2036
"VariantDispatch" ,
2031
2037
VariantType :: Nil as u32 ,
2032
2038
VariantType :: Nil . name ( ) ,
2033
2039
) ,
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) => {
2143
2061
//Allows serializing to non-self-describing formats by avoiding serializing `Variant`s
2144
2062
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)
2151
2064
}
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) ,
2194
2072
}
2195
2073
}
2196
2074
}
@@ -2207,76 +2085,49 @@ pub mod serde {
2207
2085
where
2208
2086
A : EnumAccess < ' de > ,
2209
2087
{
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 ( ) ?;
2214
2092
VariantDispatch :: Nil
2215
2093
}
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 => {
2245
2111
// should return None
2246
- VariantDispatch :: Object ( variant . newtype_variant :: < Option < ( ) > > ( ) ?. to_variant ( ) )
2112
+ VariantDispatch :: Object ( v . newtype_variant :: < Option < ( ) > > ( ) ?. to_variant ( ) )
2247
2113
}
2248
- ( VariantType :: Dictionary , variant ) => {
2249
- VariantDispatch :: Dictionary ( variant . newtype_variant :: < DictionaryDispatch > ( ) ?. 0 )
2114
+ VariantType :: Dictionary => {
2115
+ VariantDispatch :: Dictionary ( v . newtype_variant :: < DictionaryDispatch > ( ) ?. 0 )
2250
2116
}
2251
- ( VariantType :: VariantArray , variant) => VariantDispatch :: VariantArray (
2252
- variant
2253
- . newtype_variant :: < Vec < VariantDispatch > > ( ) ?
2117
+ VariantType :: VariantArray => VariantDispatch :: VariantArray (
2118
+ v. newtype_variant :: < Vec < VariantDispatch > > ( ) ?
2254
2119
. iter ( )
2255
2120
. map ( Into :: < Variant > :: into)
2256
2121
. collect :: < VariantArray < Unique > > ( )
2257
2122
. into_shared ( ) ,
2258
2123
) ,
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 ( ) ?) ,
2280
2131
} )
2281
2132
}
2282
2133
}
0 commit comments