Auto format attributes on their own line

This commit is contained in:
David Tolnay
2017-12-23 20:24:57 -08:00
parent ab234be025
commit ed6a1de311
9 changed files with 228 additions and 117 deletions
+1
View File
@@ -0,0 +1 @@
same_line_attributes = false
+2 -1
View File
@@ -61,7 +61,8 @@ enum Unsupported {
Sequence, Sequence,
Tuple, Tuple,
TupleStruct, TupleStruct,
#[cfg(not(any(feature = "std", feature = "alloc")))] Enum, #[cfg(not(any(feature = "std", feature = "alloc")))]
Enum,
} }
impl Display for Unsupported { impl Display for Unsupported {
+71 -32
View File
@@ -84,10 +84,14 @@ where
E: MyDefault, E: MyDefault,
{ {
a1: A, a1: A,
#[serde(default)] a2: B, #[serde(default)]
#[serde(default = "MyDefault::my_default")] a3: C, a2: B,
#[serde(skip_deserializing)] a4: D, #[serde(default = "MyDefault::my_default")]
#[serde(skip_deserializing, default = "MyDefault::my_default")] a5: E, a3: C,
#[serde(skip_deserializing)]
a4: D,
#[serde(skip_deserializing, default = "MyDefault::my_default")]
a5: E,
} }
#[test] #[test]
@@ -147,10 +151,14 @@ where
{ {
Struct { Struct {
a1: A, a1: A,
#[serde(default)] a2: B, #[serde(default)]
#[serde(default = "MyDefault::my_default")] a3: C, a2: B,
#[serde(skip_deserializing)] a4: D, #[serde(default = "MyDefault::my_default")]
#[serde(skip_deserializing, default = "MyDefault::my_default")] a5: E, a3: C,
#[serde(skip_deserializing)]
a4: D,
#[serde(skip_deserializing, default = "MyDefault::my_default")]
a5: E,
}, },
} }
@@ -217,7 +225,8 @@ impl MyDefault for NoStdDefault {
#[derive(Debug, PartialEq, Deserialize)] #[derive(Debug, PartialEq, Deserialize)]
struct ContainsNoStdDefault<A: MyDefault> { struct ContainsNoStdDefault<A: MyDefault> {
#[serde(default = "MyDefault::my_default")] a: A, #[serde(default = "MyDefault::my_default")]
a: A,
} }
// Tests that a struct field does not need to implement std::default::Default if // Tests that a struct field does not need to implement std::default::Default if
@@ -287,10 +296,14 @@ impl MyDefault for NotDeserializeEnum {
#[derive(Debug, PartialEq, Deserialize)] #[derive(Debug, PartialEq, Deserialize)]
struct ContainsNotDeserialize<A, B, C: DeserializeWith, E: MyDefault> { struct ContainsNotDeserialize<A, B, C: DeserializeWith, E: MyDefault> {
#[serde(skip_deserializing)] a: A, #[serde(skip_deserializing)]
#[serde(skip_deserializing, default)] b: B, a: A,
#[serde(deserialize_with = "DeserializeWith::deserialize_with", default)] c: C, #[serde(skip_deserializing, default)]
#[serde(skip_deserializing, default = "MyDefault::my_default")] e: E, b: B,
#[serde(deserialize_with = "DeserializeWith::deserialize_with", default)]
c: C,
#[serde(skip_deserializing, default = "MyDefault::my_default")]
e: E,
} }
// Tests that a struct field does not need to implement Deserialize if it is // Tests that a struct field does not need to implement Deserialize if it is
@@ -373,14 +386,16 @@ fn test_ignore_unknown() {
#[serde(rename = "Superhero")] #[serde(rename = "Superhero")]
struct RenameStruct { struct RenameStruct {
a1: i32, a1: i32,
#[serde(rename = "a3")] a2: i32, #[serde(rename = "a3")]
a2: i32,
} }
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename(serialize = "SuperheroSer", deserialize = "SuperheroDe"))] #[serde(rename(serialize = "SuperheroSer", deserialize = "SuperheroDe"))]
struct RenameStructSerializeDeserialize { struct RenameStructSerializeDeserialize {
a1: i32, a1: i32,
#[serde(rename(serialize = "a4", deserialize = "a5"))] a2: i32, #[serde(rename(serialize = "a4", deserialize = "a5"))]
a2: i32,
} }
#[test] #[test]
@@ -434,10 +449,17 @@ fn test_rename_struct() {
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename = "Superhero")] #[serde(rename = "Superhero")]
enum RenameEnum { enum RenameEnum {
#[serde(rename = "bruce_wayne")] Batman, #[serde(rename = "bruce_wayne")]
#[serde(rename = "clark_kent")] Superman(i8), Batman,
#[serde(rename = "diana_prince")] WonderWoman(i8, i8), #[serde(rename = "clark_kent")]
#[serde(rename = "barry_allan")] Flash { #[serde(rename = "b")] a: i32 }, Superman(i8),
#[serde(rename = "diana_prince")]
WonderWoman(i8, i8),
#[serde(rename = "barry_allan")]
Flash {
#[serde(rename = "b")]
a: i32,
},
} }
#[derive(Debug, PartialEq, Deserialize, Serialize)] #[derive(Debug, PartialEq, Deserialize, Serialize)]
@@ -548,8 +570,10 @@ where
C: ShouldSkip, C: ShouldSkip,
{ {
a: &'a i8, a: &'a i8,
#[serde(skip_serializing)] b: B, #[serde(skip_serializing)]
#[serde(skip_serializing_if = "ShouldSkip::should_skip")] c: C, b: B,
#[serde(skip_serializing_if = "ShouldSkip::should_skip")]
c: C,
} }
#[test] #[test]
@@ -591,7 +615,8 @@ fn test_skip_serializing_struct() {
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
struct SkipStruct<B> { struct SkipStruct<B> {
a: i8, a: i8,
#[serde(skip)] b: B, #[serde(skip)]
b: B,
} }
#[test] #[test]
@@ -630,8 +655,10 @@ where
{ {
Struct { Struct {
a: &'a i8, a: &'a i8,
#[serde(skip_serializing)] _b: B, #[serde(skip_serializing)]
#[serde(skip_serializing_if = "ShouldSkip::should_skip")] c: C, _b: B,
#[serde(skip_serializing_if = "ShouldSkip::should_skip")]
c: C,
}, },
} }
@@ -697,9 +724,12 @@ where
D: SerializeWith, D: SerializeWith,
{ {
a: &'a Option<i8>, a: &'a Option<i8>,
#[serde(skip_serializing)] b: &'a B, #[serde(skip_serializing)]
#[serde(skip_serializing)] c: Option<C>, b: &'a B,
#[serde(serialize_with = "SerializeWith::serialize_with")] d: D, #[serde(skip_serializing)]
c: Option<C>,
#[serde(serialize_with = "SerializeWith::serialize_with")]
d: D,
} }
#[test] #[test]
@@ -733,7 +763,8 @@ where
B: SerializeWith, B: SerializeWith,
{ {
a: &'a i8, a: &'a i8,
#[serde(serialize_with = "SerializeWith::serialize_with")] b: B, #[serde(serialize_with = "SerializeWith::serialize_with")]
b: B,
} }
#[test] #[test]
@@ -777,7 +808,8 @@ where
{ {
Struct { Struct {
a: &'a i8, a: &'a i8,
#[serde(serialize_with = "SerializeWith::serialize_with")] b: B, #[serde(serialize_with = "SerializeWith::serialize_with")]
b: B,
}, },
} }
@@ -993,7 +1025,8 @@ where
B: DeserializeWith, B: DeserializeWith,
{ {
a: i8, a: i8,
#[serde(deserialize_with = "DeserializeWith::deserialize_with")] b: B, #[serde(deserialize_with = "DeserializeWith::deserialize_with")]
b: B,
} }
#[test] #[test]
@@ -1036,7 +1069,8 @@ where
{ {
Struct { Struct {
a: i8, a: i8,
#[serde(deserialize_with = "DeserializeWith::deserialize_with")] b: B, #[serde(deserialize_with = "DeserializeWith::deserialize_with")]
b: B,
}, },
} }
@@ -1136,7 +1170,12 @@ fn test_missing_renamed_field_enum() {
#[derive(Debug, PartialEq, Deserialize)] #[derive(Debug, PartialEq, Deserialize)]
enum InvalidLengthEnum { enum InvalidLengthEnum {
A(i32, i32, i32), A(i32, i32, i32),
B(#[serde(skip_deserializing)] i32, i32, i32), B(
#[serde(skip_deserializing)]
i32,
i32,
i32,
),
} }
#[test] #[test]
+6 -3
View File
@@ -110,7 +110,8 @@ fn test_cow() {
struct Cows<'a, 'b> { struct Cows<'a, 'b> {
copied: Cow<'a, str>, copied: Cow<'a, str>,
#[serde(borrow)] borrowed: Cow<'b, str>, #[serde(borrow)]
borrowed: Cow<'b, str>,
} }
let tokens = &[ let tokens = &[
@@ -145,7 +146,8 @@ fn test_lifetimes() {
struct Cows<'a, 'b> { struct Cows<'a, 'b> {
_copied: Cow<'a, str>, _copied: Cow<'a, str>,
#[serde(borrow)] _borrowed: Cow<'b, str>, #[serde(borrow)]
_borrowed: Cow<'b, str>,
} }
// Tests that `'de: 'a` is not required by the Deserialize impl. // Tests that `'de: 'a` is not required by the Deserialize impl.
@@ -158,7 +160,8 @@ fn test_lifetimes() {
#[derive(Deserialize)] #[derive(Deserialize)]
struct Wrap<'a, 'b> { struct Wrap<'a, 'b> {
#[serde(borrow = "'b")] _cows: Cows<'a, 'b>, #[serde(borrow = "'b")]
_cows: Cows<'a, 'b>,
} }
// Tests that `'de: 'a` is not required by the Deserialize impl. // Tests that `'de: 'a` is not required by the Deserialize impl.
+12 -6
View File
@@ -49,14 +49,16 @@ struct TupleStruct(i32, i32, i32);
struct Struct { struct Struct {
a: i32, a: i32,
b: i32, b: i32,
#[serde(skip_deserializing)] c: i32, #[serde(skip_deserializing)]
c: i32,
} }
#[derive(PartialEq, Debug, Deserialize)] #[derive(PartialEq, Debug, Deserialize)]
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
struct StructDenyUnknown { struct StructDenyUnknown {
a: i32, a: i32,
#[serde(skip_deserializing)] b: i32, #[serde(skip_deserializing)]
b: i32,
} }
#[derive(PartialEq, Debug, Deserialize)] #[derive(PartialEq, Debug, Deserialize)]
@@ -77,19 +79,22 @@ impl Default for StructDefault<String> {
#[derive(PartialEq, Debug, Deserialize)] #[derive(PartialEq, Debug, Deserialize)]
struct StructSkipAll { struct StructSkipAll {
#[serde(skip_deserializing)] a: i32, #[serde(skip_deserializing)]
a: i32,
} }
#[derive(PartialEq, Debug, Deserialize)] #[derive(PartialEq, Debug, Deserialize)]
#[serde(default)] #[serde(default)]
struct StructSkipDefault { struct StructSkipDefault {
#[serde(skip_deserializing)] a: i32, #[serde(skip_deserializing)]
a: i32,
} }
#[derive(PartialEq, Debug, Deserialize)] #[derive(PartialEq, Debug, Deserialize)]
#[serde(default)] #[serde(default)]
struct StructSkipDefaultGeneric<T> { struct StructSkipDefaultGeneric<T> {
#[serde(skip_deserializing)] t: T, #[serde(skip_deserializing)]
t: T,
} }
impl Default for StructSkipDefault { impl Default for StructSkipDefault {
@@ -101,7 +106,8 @@ impl Default for StructSkipDefault {
#[derive(PartialEq, Debug, Deserialize)] #[derive(PartialEq, Debug, Deserialize)]
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
struct StructSkipAllDenyUnknown { struct StructSkipAllDenyUnknown {
#[serde(skip_deserializing)] a: i32, #[serde(skip_deserializing)]
a: i32,
} }
#[derive(PartialEq, Debug, Deserialize)] #[derive(PartialEq, Debug, Deserialize)]
+76 -52
View File
@@ -46,21 +46,25 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct With<T> { struct With<T> {
t: T, t: T,
#[serde(serialize_with = "ser_x", deserialize_with = "de_x")] x: X, #[serde(serialize_with = "ser_x", deserialize_with = "de_x")]
x: X,
} }
assert::<With<i32>>(); assert::<With<i32>>();
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct WithTogether<T> { struct WithTogether<T> {
t: T, t: T,
#[serde(with = "both_x")] x: X, #[serde(with = "both_x")]
x: X,
} }
assert::<WithTogether<i32>>(); assert::<WithTogether<i32>>();
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct WithRef<'a, T: 'a> { struct WithRef<'a, T: 'a> {
#[serde(skip_deserializing)] t: StdOption<&'a T>, #[serde(skip_deserializing)]
#[serde(serialize_with = "ser_x", deserialize_with = "de_x")] x: X, t: StdOption<&'a T>,
#[serde(serialize_with = "ser_x", deserialize_with = "de_x")]
x: X,
} }
assert::<WithRef<i32>>(); assert::<WithRef<i32>>();
@@ -88,14 +92,19 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
enum EnumWith<T> { enum EnumWith<T> {
Unit, Unit,
Newtype(#[serde(serialize_with = "ser_x", deserialize_with = "de_x")] X), Newtype(
#[serde(serialize_with = "ser_x", deserialize_with = "de_x")]
X,
),
Tuple( Tuple(
T, T,
#[serde(serialize_with = "ser_x", deserialize_with = "de_x")] X, #[serde(serialize_with = "ser_x", deserialize_with = "de_x")]
X,
), ),
Struct { Struct {
t: T, t: T,
#[serde(serialize_with = "ser_x", deserialize_with = "de_x")] x: X, #[serde(serialize_with = "ser_x", deserialize_with = "de_x")]
x: X,
}, },
} }
assert::<EnumWith<i32>>(); assert::<EnumWith<i32>>();
@@ -113,13 +122,17 @@ fn test_gen() {
assert_ser::<MultipleRef<i32>>(); assert_ser::<MultipleRef<i32>>();
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct Newtype(#[serde(serialize_with = "ser_x", deserialize_with = "de_x")] X); struct Newtype(
#[serde(serialize_with = "ser_x", deserialize_with = "de_x")]
X,
);
assert::<Newtype>(); assert::<Newtype>();
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct Tuple<T>( struct Tuple<T>(
T, T,
#[serde(serialize_with = "ser_x", deserialize_with = "de_x")] X, #[serde(serialize_with = "ser_x", deserialize_with = "de_x")]
X,
); );
assert::<Tuple<i32>>(); assert::<Tuple<i32>>();
@@ -236,13 +249,15 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct BracedSkipAll { struct BracedSkipAll {
#[serde(skip_deserializing)] f: u8, #[serde(skip_deserializing)]
f: u8,
} }
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
struct BracedSkipAllDenyUnknown { struct BracedSkipAllDenyUnknown {
#[serde(skip_deserializing)] f: u8, #[serde(skip_deserializing)]
f: u8,
} }
#[cfg(feature = "unstable")] #[cfg(feature = "unstable")]
@@ -255,11 +270,17 @@ fn test_gen() {
struct EmptyTupleDenyUnknown(); struct EmptyTupleDenyUnknown();
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct TupleSkipAll(#[serde(skip_deserializing)] u8); struct TupleSkipAll(
#[serde(skip_deserializing)]
u8,
);
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
struct TupleSkipAllDenyUnknown(#[serde(skip_deserializing)] u8); struct TupleSkipAllDenyUnknown(
#[serde(skip_deserializing)]
u8,
);
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
enum EmptyEnum {} enum EmptyEnum {}
@@ -280,8 +301,14 @@ fn test_gen() {
enum EmptyVariants { enum EmptyVariants {
Braced {}, Braced {},
Tuple(), Tuple(),
BracedSkip { #[serde(skip_deserializing)] f: u8 }, BracedSkip {
TupleSkip(#[serde(skip_deserializing)] u8), #[serde(skip_deserializing)]
f: u8,
},
TupleSkip(
#[serde(skip_deserializing)]
u8,
),
} }
#[cfg(feature = "unstable")] #[cfg(feature = "unstable")]
@@ -290,8 +317,14 @@ fn test_gen() {
enum EmptyVariantsDenyUnknown { enum EmptyVariantsDenyUnknown {
Braced {}, Braced {},
Tuple(), Tuple(),
BracedSkip { #[serde(skip_deserializing)] f: u8 }, BracedSkip {
TupleSkip(#[serde(skip_deserializing)] u8), #[serde(skip_deserializing)]
f: u8,
},
TupleSkip(
#[serde(skip_deserializing)]
u8,
),
} }
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
@@ -311,8 +344,10 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(untagged, remote = "Or")] #[serde(untagged, remote = "Or")]
enum OrDef<A, B> { enum OrDef<A, B> {
#[allow(dead_code)] A(A), #[allow(dead_code)]
#[allow(dead_code)] B(B), A(A),
#[allow(dead_code)]
B(B),
} }
struct Str<'a>(&'a str); struct Str<'a>(&'a str);
@@ -323,13 +358,16 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct Remote<'a> { struct Remote<'a> {
#[serde(with = "OrDef")] or: Or<u8, bool>, #[serde(with = "OrDef")]
#[serde(borrow, with = "StrDef")] s: Str<'a>, or: Or<u8, bool>,
#[serde(borrow, with = "StrDef")]
s: Str<'a>,
} }
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
enum BorrowVariant<'a> { enum BorrowVariant<'a> {
#[serde(borrow, with = "StrDef")] S(Str<'a>), #[serde(borrow, with = "StrDef")]
S(Str<'a>),
} }
mod vis { mod vis {
@@ -343,14 +381,14 @@ fn test_gen() {
// This would not work if SDef::serialize / deserialize are private. // This would not work if SDef::serialize / deserialize are private.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct RemoteVisibility { struct RemoteVisibility {
#[serde(with = "vis::SDef")] s: vis::S, #[serde(with = "vis::SDef")]
s: vis::S,
} }
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
enum ExternallyTaggedVariantWith { enum ExternallyTaggedVariantWith {
#[allow(dead_code)] Normal { #[allow(dead_code)]
f1: String, Normal { f1: String },
},
#[serde(serialize_with = "ser_x")] #[serde(serialize_with = "ser_x")]
#[serde(deserialize_with = "de_x")] #[serde(deserialize_with = "de_x")]
@@ -365,10 +403,7 @@ fn test_gen() {
#[serde(serialize_with = "serialize_some_other_variant")] #[serde(serialize_with = "serialize_some_other_variant")]
#[serde(deserialize_with = "deserialize_some_other_variant")] #[serde(deserialize_with = "deserialize_some_other_variant")]
#[allow(dead_code)] #[allow(dead_code)]
Struct { Struct { f1: String, f2: u8 },
f1: String,
f2: u8,
},
#[serde(serialize_with = "serialize_some_unit_variant")] #[serde(serialize_with = "serialize_some_unit_variant")]
#[serde(deserialize_with = "deserialize_some_unit_variant")] #[serde(deserialize_with = "deserialize_some_unit_variant")]
@@ -380,9 +415,8 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(tag = "t")] #[serde(tag = "t")]
enum InternallyTaggedVariantWith { enum InternallyTaggedVariantWith {
#[allow(dead_code)] Normal { #[allow(dead_code)]
f1: String, Normal { f1: String },
},
#[serde(serialize_with = "ser_x")] #[serde(serialize_with = "ser_x")]
#[serde(deserialize_with = "de_x")] #[serde(deserialize_with = "de_x")]
@@ -392,10 +426,7 @@ fn test_gen() {
#[serde(serialize_with = "serialize_some_other_variant")] #[serde(serialize_with = "serialize_some_other_variant")]
#[serde(deserialize_with = "deserialize_some_other_variant")] #[serde(deserialize_with = "deserialize_some_other_variant")]
#[allow(dead_code)] #[allow(dead_code)]
Struct { Struct { f1: String, f2: u8 },
f1: String,
f2: u8,
},
#[serde(serialize_with = "serialize_some_unit_variant")] #[serde(serialize_with = "serialize_some_unit_variant")]
#[serde(deserialize_with = "deserialize_some_unit_variant")] #[serde(deserialize_with = "deserialize_some_unit_variant")]
@@ -407,9 +438,8 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(tag = "t", content = "c")] #[serde(tag = "t", content = "c")]
enum AdjacentlyTaggedVariantWith { enum AdjacentlyTaggedVariantWith {
#[allow(dead_code)] Normal { #[allow(dead_code)]
f1: String, Normal { f1: String },
},
#[serde(serialize_with = "ser_x")] #[serde(serialize_with = "ser_x")]
#[serde(deserialize_with = "de_x")] #[serde(deserialize_with = "de_x")]
@@ -424,10 +454,7 @@ fn test_gen() {
#[serde(serialize_with = "serialize_some_other_variant")] #[serde(serialize_with = "serialize_some_other_variant")]
#[serde(deserialize_with = "deserialize_some_other_variant")] #[serde(deserialize_with = "deserialize_some_other_variant")]
#[allow(dead_code)] #[allow(dead_code)]
Struct { Struct { f1: String, f2: u8 },
f1: String,
f2: u8,
},
#[serde(serialize_with = "serialize_some_unit_variant")] #[serde(serialize_with = "serialize_some_unit_variant")]
#[serde(deserialize_with = "deserialize_some_unit_variant")] #[serde(deserialize_with = "deserialize_some_unit_variant")]
@@ -439,9 +466,8 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(untagged)] #[serde(untagged)]
enum UntaggedVariantWith { enum UntaggedVariantWith {
#[allow(dead_code)] Normal { #[allow(dead_code)]
f1: String, Normal { f1: String },
},
#[serde(serialize_with = "ser_x")] #[serde(serialize_with = "ser_x")]
#[serde(deserialize_with = "de_x")] #[serde(deserialize_with = "de_x")]
@@ -456,10 +482,7 @@ fn test_gen() {
#[serde(serialize_with = "serialize_some_other_variant")] #[serde(serialize_with = "serialize_some_other_variant")]
#[serde(deserialize_with = "deserialize_some_other_variant")] #[serde(deserialize_with = "deserialize_some_other_variant")]
#[allow(dead_code)] #[allow(dead_code)]
Struct { Struct { f1: String, f2: u8 },
f1: String,
f2: u8,
},
#[serde(serialize_with = "serialize_some_unit_variant")] #[serde(serialize_with = "serialize_some_unit_variant")]
#[serde(deserialize_with = "deserialize_some_unit_variant")] #[serde(deserialize_with = "deserialize_some_unit_variant")]
@@ -489,7 +512,8 @@ fn test_gen() {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct SkippedStaticStr { struct SkippedStaticStr {
#[serde(skip_deserializing)] skipped: &'static str, #[serde(skip_deserializing)]
skipped: &'static str,
other: isize, other: isize,
} }
assert::<SkippedStaticStr>(); assert::<SkippedStaticStr>();
+2 -1
View File
@@ -49,7 +49,8 @@ fn test_unit_fallthrough() {
enum F { enum F {
Aaa, Aaa,
Bbb, Bbb,
#[serde(other)] Other, #[serde(other)]
Other,
} }
assert_de_tokens(&F::Other, &[Token::Str("x")]); assert_de_tokens(&F::Other, &[Token::Str("x")]);
+43 -17
View File
@@ -85,23 +85,32 @@ mod remote {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct Test { struct Test {
#[serde(with = "UnitDef")] unit: remote::Unit, #[serde(with = "UnitDef")]
unit: remote::Unit,
#[serde(with = "PrimitivePrivDef")] primitive_priv: remote::PrimitivePriv, #[serde(with = "PrimitivePrivDef")]
primitive_priv: remote::PrimitivePriv,
#[serde(with = "PrimitivePubDef")] primitive_pub: remote::PrimitivePub, #[serde(with = "PrimitivePubDef")]
primitive_pub: remote::PrimitivePub,
#[serde(with = "NewtypePrivDef")] newtype_priv: remote::NewtypePriv, #[serde(with = "NewtypePrivDef")]
newtype_priv: remote::NewtypePriv,
#[serde(with = "NewtypePubDef")] newtype_pub: remote::NewtypePub, #[serde(with = "NewtypePubDef")]
newtype_pub: remote::NewtypePub,
#[serde(with = "TuplePrivDef")] tuple_priv: remote::TuplePriv, #[serde(with = "TuplePrivDef")]
tuple_priv: remote::TuplePriv,
#[serde(with = "TuplePubDef")] tuple_pub: remote::TuplePub, #[serde(with = "TuplePubDef")]
tuple_pub: remote::TuplePub,
#[serde(with = "StructPrivDef")] struct_priv: remote::StructPriv, #[serde(with = "StructPrivDef")]
struct_priv: remote::StructPriv,
#[serde(with = "StructPubDef")] struct_pub: remote::StructPub, #[serde(with = "StructPubDef")]
struct_pub: remote::StructPub,
} }
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
@@ -110,7 +119,10 @@ struct UnitDef;
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "remote::PrimitivePriv")] #[serde(remote = "remote::PrimitivePriv")]
struct PrimitivePrivDef(#[serde(getter = "remote::PrimitivePriv::get")] u8); struct PrimitivePrivDef(
#[serde(getter = "remote::PrimitivePriv::get")]
u8,
);
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "remote::PrimitivePub")] #[serde(remote = "remote::PrimitivePub")]
@@ -118,27 +130,40 @@ struct PrimitivePubDef(u8);
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "remote::NewtypePriv")] #[serde(remote = "remote::NewtypePriv")]
struct NewtypePrivDef(#[serde(getter = "remote::NewtypePriv::get", with = "UnitDef")] remote::Unit); struct NewtypePrivDef(
#[serde(getter = "remote::NewtypePriv::get", with = "UnitDef")]
remote::Unit,
);
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "remote::NewtypePub")] #[serde(remote = "remote::NewtypePub")]
struct NewtypePubDef(#[serde(with = "UnitDef")] remote::Unit); struct NewtypePubDef(
#[serde(with = "UnitDef")]
remote::Unit,
);
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "remote::TuplePriv")] #[serde(remote = "remote::TuplePriv")]
struct TuplePrivDef( struct TuplePrivDef(
#[serde(getter = "remote::TuplePriv::first")] u8, #[serde(getter = "remote::TuplePriv::first")]
#[serde(getter = "remote::TuplePriv::second", with = "UnitDef")] remote::Unit, u8,
#[serde(getter = "remote::TuplePriv::second", with = "UnitDef")]
remote::Unit,
); );
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "remote::TuplePub")] #[serde(remote = "remote::TuplePub")]
struct TuplePubDef(u8, #[serde(with = "UnitDef")] remote::Unit); struct TuplePubDef(
u8,
#[serde(with = "UnitDef")]
remote::Unit,
);
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "remote::StructPriv")] #[serde(remote = "remote::StructPriv")]
struct StructPrivDef { struct StructPrivDef {
#[serde(getter = "remote::StructPriv::a")] a: u8, #[serde(getter = "remote::StructPriv::a")]
a: u8,
#[serde(getter = "remote::StructPriv::b")] #[serde(getter = "remote::StructPriv::b")]
#[serde(with = "UnitDef")] #[serde(with = "UnitDef")]
@@ -148,7 +173,8 @@ struct StructPrivDef {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "remote::StructPub")] #[serde(remote = "remote::StructPub")]
struct StructPubDef { struct StructPubDef {
#[allow(dead_code)] a: u8, #[allow(dead_code)]
a: u8,
#[allow(dead_code)] #[allow(dead_code)]
#[serde(with = "UnitDef")] #[serde(with = "UnitDef")]
+15 -5
View File
@@ -50,11 +50,21 @@ enum Enum {
Unit, Unit,
One(i32), One(i32),
Seq(i32, i32), Seq(i32, i32),
Map { a: i32, b: i32 }, Map {
#[serde(skip_serializing)] SkippedUnit, a: i32,
#[serde(skip_serializing)] SkippedOne(i32), b: i32,
#[serde(skip_serializing)] SkippedSeq(i32, i32), },
#[serde(skip_serializing)] SkippedMap { _a: i32, _b: i32 }, #[serde(skip_serializing)]
SkippedUnit,
#[serde(skip_serializing)]
SkippedOne(i32),
#[serde(skip_serializing)]
SkippedSeq(i32, i32),
#[serde(skip_serializing)]
SkippedMap {
_a: i32,
_b: i32,
},
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////