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