David Tolnay
5ee2fc0562
Allow multiple flattened maps to see the same fields
...
Before this change, flattening anything after a flattened map was
nonsensical because the later flattened field would always observe no
input fields.
#[derive(Deserialize)]
struct S {
#[serde(flatten)]
map: Map<K, V>,
#[serde(flatten)]
other: Other, // always empty
}
This change makes a flattened map not consume any of the input fields,
leaving them available to later flattened fields in the same struct. The
new behavior is useful when two flattened fields that both use
deserialize_map care about disjoint subsets of the fields in the input.
#[derive(Deserialize)]
struct S {
// Looks at fields with a "player1_" prefix.
#[serde(flatten, with = "prefix_player1")]
player1: Player,
// Looks at fields with a "player2_" prefix.
#[serde(flatten, with = "prefix_player2")]
player2: Player,
}
2018-06-01 12:50:23 -07:00
David Tolnay
927ec7d38e
Implement Copy for value deserializers of primitive types
2018-05-26 15:56:57 -07:00
David Tolnay
ea118e11a0
Test the 128-bit IntoDeserializer impls
2018-05-26 15:21:37 -07:00
David Tolnay
9083cf4b00
Test integer128 impls
2018-05-20 22:17:35 -07:00
David Tolnay
b13875dd97
Add compile-fail tests for transparent error messages
2018-05-20 21:55:50 -07:00
David Tolnay
1335f85213
Test transparent attribute
2018-05-20 21:55:21 -07:00
David Tolnay
4fa2a50f62
Format with rustfmt 0.7.0
2018-05-19 17:33:30 -07:00
David Tolnay
16d1265e17
Fix generated code for deserializing untagged newtype variant
2018-05-19 17:20:14 -07:00
David Tolnay
4305260174
Support flattened untagged Options in struct fields
2018-05-11 22:14:16 -07:00
David Tolnay
368961e961
Support deserializing flattened untagged enum
2018-05-10 08:33:47 -07:00
David Tolnay
b2b36e1764
Accept implicitly borrowed data inside of Option
2018-05-08 12:19:09 -07:00
David Tolnay
4ad140ea70
Improve error for struct deserialized from array that is too short
2018-05-08 12:03:35 -07:00
David Tolnay
67777eb585
Account for skip_serializing_if in tuple struct length
2018-05-08 11:49:37 -07:00
David Tolnay
b4e51fcc77
Respect skip_serializing in tuple structs and variants
2018-05-08 11:37:52 -07:00
David Tolnay
be7fe2a5eb
Introduce bound attribute on enum variants
2018-05-08 11:16:10 -07:00
David Tolnay
c4181f46be
Respect variant skip attribute in inferred bounds
2018-05-07 21:30:00 -07:00
David Tolnay
7e3efaf6c5
Improve error when a 'de lifetime parameter already exists
2018-05-07 21:15:44 -07:00
David Tolnay
12fe42ed45
Support empty adjacently tagged enum
2018-05-07 21:02:42 -07:00
David Tolnay
0025ef9aba
Detect deserialize on a struct ending in dynamically sized slice
2018-05-07 11:52:59 -07:00
David Tolnay
4687c1b52b
Test Weak deserialize impls
2018-05-07 11:23:18 -07:00
David Tolnay
a58abae193
Test Weak serialize impls
2018-05-07 11:23:17 -07:00
David Tolnay
eecc0870fc
Test for pub(restricted)
2018-05-06 23:22:27 -07:00
David Tolnay
3cd9d071c2
Fix adjacently tagged empty tuple variant or struct variant
2018-05-06 21:50:40 -07:00
David Tolnay
972cc06fed
Format the flatten tests using rustfmt 0.6.1
2018-05-06 21:38:41 -07:00
David Tolnay
2009b4da5f
Remove old flatten in enum compile-fail test
2018-05-06 21:26:40 -07:00
David Tolnay
0b72c86a35
Add tests for flatten in enums
2018-05-06 21:23:20 -07:00
David Tolnay
d8120e19bc
Support deserializing a flattened internally tagged enum
2018-05-05 21:52:16 -07:00
David Tolnay
97eff8e875
Format with rustfmt 0.6.1
2018-05-05 00:56:12 -07:00
David Tolnay
b78f434086
Pretend remote derives are not dead code
2018-05-02 14:23:59 -07:00
David Tolnay
cb2b92f828
Handle flatten + deserialize_with
2018-05-01 22:25:06 -07:00
David Tolnay
d82d1707d6
Format with rustfmt 0.6.0
2018-04-30 01:42:46 -07:00
David Tolnay
bceda5fb18
Unpack a layer of NewtypeStruct when content is newtype
2018-04-23 11:04:42 -07:00
David Tolnay
3c4961c48e
Lenient byte and string deserialization from buffered content
2018-04-19 10:21:55 -07:00
David Tolnay
202c10147e
Fix deserialize_with on a struct variant with one field
2018-04-12 23:44:53 -07:00
Osspial
4415d10c61
Fix associated types only working for first generic parameter
...
Also, removes extraneous `where for`
2018-04-12 16:44:34 -04:00
Osspial
def8d6e8af
Add associated type test
2018-04-10 11:16:32 -04:00
David Tolnay
860241aa88
Merge pull request #1205 from mitsuhiko/bugfix/tuple-struct-flatten
...
Produce error message for use of flatten in tuple structs
2018-04-02 07:09:39 +02:00
Armin Ronacher
77376f39ea
Produce error message for use of flatten in tuple structs
2018-04-01 22:11:21 +02:00
Armin Ronacher
302fac91a3
Produce error message for use of flatten within struct variant
2018-04-01 22:01:24 +02:00
David Tolnay
42430902e2
Special case remote = "Self"
2018-03-27 10:56:05 +02:00
David Tolnay
5c9c97c0ce
Remove test that fails to parse flatten attribute
2018-03-25 12:33:50 +02:00
Armin Ronacher
3d647f4063
Fixed a compilefail test for flatten on enums
2018-03-20 23:26:22 +01:00
Armin Ronacher
27f935f036
Correctly serialize newtype variants for flatten
2018-03-20 23:05:05 +01:00
Armin Ronacher
99614c7266
Added flatten on enum compile fail test
2018-03-20 22:15:47 +01:00
Armin Ronacher
bb2ecb3bc4
Added compilefail tests for flatten conflicts
2018-03-20 22:04:12 +01:00
Armin Ronacher
e4ef087735
Added support for borrowing when flattening
2018-03-20 15:19:36 +01:00
Armin Ronacher
8637dda60f
Refactored a test
2018-03-20 13:38:08 +01:00
Armin Ronacher
f02dbf381b
Added non string key support for flattening
2018-03-19 00:57:58 +01:00
Armin Ronacher
7cf184624a
Use more consistent error messages for bad flattening
2018-03-18 23:46:28 +01:00
Armin Ronacher
c5a3128492
Added a more complex flattening test
2018-03-18 23:01:13 +01:00