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
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
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
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
972cc06fed
Format the flatten tests using rustfmt 0.6.1
2018-05-06 21:38:41 -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
d82d1707d6
Format with rustfmt 0.6.0
2018-04-30 01:42:46 -07:00
Armin Ronacher
27f935f036
Correctly serialize newtype variants for flatten
2018-03-20 23:05:05 +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
Armin Ronacher
58d52e784b
Remove #[serde(repr = "map")]
2018-03-18 18:30:46 +01:00
Armin Ronacher
61b167be9a
Attempted support for in_place deserialization for structs as map
2018-03-18 18:22:06 +01:00
Armin Ronacher
f1af2dc5ab
Added support for newtype variant serialization
2018-03-18 13:10:54 +01:00
Armin Ronacher
ebc61baab2
Added newtype struct support for flattening
2018-03-18 13:02:00 +01:00
Armin Ronacher
ffcde25b6e
Fixed some clippy warnings
2018-03-17 00:49:00 +01:00
Armin Ronacher
b8602a7e43
Added test for tag/content enum flattening
2018-03-16 23:05:48 +01:00
Armin Ronacher
a8c8c2028e
Added support for struct variant enum serialization
2018-03-16 23:05:48 +01:00
Armin Ronacher
b4ef7ac323
Updated tests for flatten
2018-03-16 23:05:48 +01:00
Armin Ronacher
583c0d8d14
Make proc-macro2/nightly happy
2018-03-16 23:05:22 +01:00
Armin Ronacher
77b07f3fbf
Added tests for unknown_fields_into
2018-03-16 23:05:22 +01:00
David Tolnay
30361ac6d0
Clean up workaround that required too many parentheses
...
The issue has been fixed in the compiler and these extra call site parentheses
are no longer required.
2018-03-09 00:22:27 -08:00
David Tolnay
1bdf5ecec4
Ignore unused_parens warning on the proc macro workaround
2018-01-21 17:54:06 -08:00
David Tolnay
6e01f220b1
Ignore clippy flagging our workaround
2018-01-13 14:28:12 -08:00
David Tolnay
ed6a1de311
Auto format attributes on their own line
2017-12-23 20:24:57 -08:00
David Tolnay
ee75e6c0e9
Format with rustfmt-nightly 0.3.4
2017-12-23 20:17:52 -08:00
David Tolnay
436cafb0a3
Catch wrong field names length in serde_test
2017-11-12 10:16:43 -08:00
David Tolnay
8a630fea7c
Suppress cast_lossless lint in test suite
2017-09-09 11:08:19 -07:00
Michael Smith
552971196d
Fix Clippy errors in variant serialize_with tests
2017-08-16 12:04:39 -07:00
Michael Smith
9fc180e62f
Implement deserialize_with for variants
...
Complements variant serialize_with and closes #1013 .
2017-08-14 14:41:05 -07:00
Michael Smith
5b815b7001
Implement serialize_with for variants
...
As discussed in #1013 , serialize_with functions attached to variants receive an
argument for each inner value contained within the variant. Internally such a
function is wired up to the serializer as if the variant were a newtype variant.
2017-08-14 11:17:08 -07:00
spikefoo
1669c69714
Add a combined #serde[(skip)]
field attribute
2017-05-16 12:33:26 +03:00
David Tolnay
15341780a2
Use struct variants in test suite
2017-04-19 13:06:31 -07:00
David Tolnay
26a6ba177c
Remove error from serde_test public API
2017-04-19 11:54:48 -07:00
David Tolnay
3f920f645c
License boilerplate
2017-04-13 17:34:42 -07:00
David Tolnay
ea8fb97beb
Format in rfc style
2017-04-13 12:32:29 -07:00
David Tolnay
51d3fb1ebc
Update token names in test suite
2017-04-05 10:40:14 -07:00
David Tolnay
67ed7a0edd
Eliminate Sep tokens in serde_test
2017-04-05 09:42:27 -07:00
David Tolnay
d3a2f5e268
Add a 'de lifetime to the deserialize traits
2017-03-29 00:10:34 -07:00
John Baublitz
bc946e4fd7
Macro attributes to specify From and Into trait types for structs and enums ( #817 )
...
* serde macro support for type conversions through From and Into trait
* Revisions requested by dtolnay
* Additional changes requested by dtolnay
2017-03-18 09:22:27 -07:00
David Tolnay
75e6da02d3
Split up test suite so it compiles in parallel
2017-02-24 15:39:18 -08:00
David Tolnay
7a2bfdc1dd
Consistent underscores in root directory
2017-01-25 20:45:33 -08:00