From a9b7aa2546aff6e8e50b248c851339ebff0eb6ad Mon Sep 17 00:00:00 2001 From: Marc-Antoine Arnaud Date: Tue, 19 Dec 2023 22:15:43 +0100 Subject: [PATCH] refactor: improve code based on clippy --- yaserde/src/de/mod.rs | 2 +- yaserde/src/ser/mod.rs | 2 +- yaserde/tests/deserializer.rs | 36 +++++----------------- yaserde/tests/enum.rs | 41 ++++++-------------------- yaserde/tests/flatten.rs | 9 ++---- yaserde/tests/namespace.rs | 24 ++++----------- yaserde/tests/option.rs | 16 ++-------- yaserde/tests/serializer.rs | 20 ++----------- yaserde/tests/skip_if.rs | 2 +- yaserde_derive/src/common/field.rs | 1 + yaserde_derive/src/de/expand_struct.rs | 10 +++---- yaserde_derive/src/ser/expand_enum.rs | 1 - 12 files changed, 39 insertions(+), 125 deletions(-) diff --git a/yaserde/src/de/mod.rs b/yaserde/src/de/mod.rs index 325dba2..b08b138 100644 --- a/yaserde/src/de/mod.rs +++ b/yaserde/src/de/mod.rs @@ -20,7 +20,7 @@ pub struct Deserializer { peeked: Option, } -impl<'de, R: Read> Deserializer { +impl Deserializer { pub fn new(reader: EventReader) -> Self { Deserializer { depth: 0, diff --git a/yaserde/src/ser/mod.rs b/yaserde/src/ser/mod.rs index 1697a41..c2a9aeb 100644 --- a/yaserde/src/ser/mod.rs +++ b/yaserde/src/ser/mod.rs @@ -60,7 +60,7 @@ pub struct Serializer { start_event_name: Option, } -impl<'de, W: Write> Serializer { +impl Serializer { pub fn new(writer: EventWriter) -> Self { Serializer { writer, diff --git a/yaserde/tests/deserializer.rs b/yaserde/tests/deserializer.rs index c470655..24e26c2 100644 --- a/yaserde/tests/deserializer.rs +++ b/yaserde/tests/deserializer.rs @@ -308,19 +308,14 @@ fn de_attributes_complex() { init(); mod other_mod { - #[derive(YaDeserialize, PartialEq, Debug)] + #[derive(Default, YaDeserialize, PartialEq, Debug)] pub enum AttrEnum { + #[default] #[yaserde(rename = "variant 1")] Variant1, #[yaserde(rename = "variant 2")] Variant2, } - - impl Default for AttrEnum { - fn default() -> AttrEnum { - AttrEnum::Variant1 - } - } } #[derive(Default, YaDeserialize, PartialEq, Debug)] @@ -476,19 +471,14 @@ fn de_enum() { items: Vec, } - #[derive(YaDeserialize, PartialEq, Debug)] + #[derive(Default, YaDeserialize, PartialEq, Debug)] #[yaserde(root = "color")] pub enum Color { + #[default] White, Black, } - impl Default for Color { - fn default() -> Color { - Color::White - } - } - #[derive(YaDeserialize, PartialEq, Debug)] pub struct RGBColor { red: String, @@ -537,19 +527,14 @@ fn de_attribute_enum() { background: Color, } - #[derive(YaDeserialize, PartialEq, Debug)] + #[derive(Default, YaDeserialize, PartialEq, Debug)] #[yaserde(root = "color")] pub enum Color { + #[default] White, Black, } - impl Default for Color { - fn default() -> Color { - Color::White - } - } - let content = ""; convert_and_validate!( content, @@ -575,8 +560,9 @@ fn de_complex_enum() { se: i32, } - #[derive(YaDeserialize, PartialEq, Debug)] + #[derive(Default, YaDeserialize, PartialEq, Debug)] pub enum Color { + #[default] White, Black(String), Orange(String), @@ -593,12 +579,6 @@ fn de_complex_enum() { Dotted(u32), } - impl Default for Color { - fn default() -> Color { - Color::White - } - } - let content = r#" diff --git a/yaserde/tests/enum.rs b/yaserde/tests/enum.rs index 8c93a13..95991bd 100644 --- a/yaserde/tests/enum.rs +++ b/yaserde/tests/enum.rs @@ -13,7 +13,9 @@ fn basic_enum() { #[derive(Debug, PartialEq, YaDeserialize, YaSerialize)] #[yaserde(rename = "color")] + #[derive(Default)] pub enum Color { + #[default] White, Black, #[yaserde(rename = "custom")] @@ -35,12 +37,6 @@ fn basic_enum() { }, } - impl Default for Color { - fn default() -> Color { - Color::White - } - } - assert_eq!(Color::default(), Color::White); #[derive(Debug, PartialEq, YaDeserialize, YaSerialize)] @@ -50,18 +46,13 @@ fn basic_enum() { blue: String, } - #[derive(Debug, PartialEq, YaDeserialize, YaSerialize)] + #[derive(Debug, PartialEq, YaDeserialize, YaSerialize, Default)] pub enum Alpha { + #[default] Transparent, Opaque, } - impl Default for Alpha { - fn default() -> Alpha { - Alpha::Transparent - } - } - let model = XmlStruct { color: Color::Black, }; @@ -129,17 +120,13 @@ fn attribute_enum() { #[derive(Debug, PartialEq, YaDeserialize, YaSerialize)] #[yaserde(rename = "color")] + #[derive(Default)] pub enum Color { #[yaserde(rename = "pink")] + #[default] Pink, } - impl Default for Color { - fn default() -> Color { - Color::Pink - } - } - let model = XmlStruct { color: Color::Pink }; let content = r#""#; @@ -166,17 +153,12 @@ fn attribute_enum2() { #[derive(Debug, PartialEq, YaSerialize, YaDeserialize)] #[yaserde(rename = "child2")] + #[derive(Default)] struct Child2 { #[yaserde(attribute)] pub num: u8, } - impl Default for Child2 { - fn default() -> Child2 { - Child2 { num: 0 } - } - } - #[derive(Debug, PartialEq, YaSerialize, YaDeserialize)] #[yaserde(flatten)] enum Base { @@ -246,8 +228,9 @@ fn unnamed_enum() { se: i32, } - #[derive(Debug, PartialEq, YaDeserialize, YaSerialize)] + #[derive(Debug, PartialEq, YaDeserialize, YaSerialize, Default)] pub enum Enum { + #[default] Simple, Field(String), FullPath(String), @@ -264,12 +247,6 @@ fn unnamed_enum() { ToRenameDots(u32), } - impl Default for Enum { - fn default() -> Enum { - Enum::Simple - } - } - let model = XmlStruct { color: Enum::Field("some_text".to_owned()), }; diff --git a/yaserde/tests/flatten.rs b/yaserde/tests/flatten.rs index cbd980d..a37e267 100644 --- a/yaserde/tests/flatten.rs +++ b/yaserde/tests/flatten.rs @@ -42,20 +42,15 @@ fn basic_flatten() { lunar_day: i32, } - #[derive(PartialEq, Debug, YaDeserialize, YaSerialize)] + #[derive(PartialEq, Debug, YaDeserialize, YaSerialize, Default)] pub enum DateKind { #[yaserde(rename = "holidays")] Holidays(Vec), #[yaserde(rename = "working")] + #[default] Working, } - impl Default for DateKind { - fn default() -> Self { - DateKind::Working - } - } - let model = DateTime { date: Date { year: 2020, diff --git a/yaserde/tests/namespace.rs b/yaserde/tests/namespace.rs index 7c632a6..3c28aed 100644 --- a/yaserde/tests/namespace.rs +++ b/yaserde/tests/namespace.rs @@ -332,17 +332,13 @@ fn enum_namespace() { prefix = "ns", namespace = "ns: http://www.sample.com/ns/domain" )] + #[derive(Default)] pub enum XmlStruct { #[yaserde(prefix = "ns")] + #[default] Item, } - impl Default for XmlStruct { - fn default() -> XmlStruct { - XmlStruct::Item - } - } - let content = r#" ns:Item @@ -364,19 +360,15 @@ fn enum_multi_namespaces() { namespace = "ns1: http://www.sample.com/ns/domain1", namespace = "ns2: http://www.sample.com/ns/domain2" )] + #[derive(Default)] pub enum XmlStruct { #[yaserde(prefix = "ns1")] + #[default] Item1, #[yaserde(prefix = "ns2")] Item2, } - impl Default for XmlStruct { - fn default() -> XmlStruct { - XmlStruct::Item1 - } - } - let model = XmlStruct::Item1; let content = r#" @@ -407,19 +399,15 @@ fn enum_attribute_namespace() { prefix = "ns", namespace = "ns: http://www.sample.com/ns/domain" )] + #[derive(Default)] pub enum XmlStruct { #[yaserde(prefix = "ns")] + #[default] Item, #[yaserde(prefix = "ns")] ItemWithField(String), } - impl Default for XmlStruct { - fn default() -> XmlStruct { - XmlStruct::Item - } - } - let content = r#" ns:Item diff --git a/yaserde/tests/option.rs b/yaserde/tests/option.rs index 3c5cc34..17fa1bd 100644 --- a/yaserde/tests/option.rs +++ b/yaserde/tests/option.rs @@ -85,17 +85,11 @@ fn option_struct() { field: SubTest, } - #[derive(Debug, PartialEq, YaDeserialize, YaSerialize)] + #[derive(Debug, Default, PartialEq, YaDeserialize, YaSerialize)] struct SubTest { content: Option, } - impl Default for SubTest { - fn default() -> Self { - SubTest { content: None } - } - } - test_for_type!( Option::, Some(Test { @@ -117,18 +111,12 @@ fn option_bool_no_crash_on_bad_input() { field: SubTest, } - #[derive(Debug, PartialEq, YaDeserialize, YaSerialize)] + #[derive(Debug, Default, PartialEq, YaDeserialize, YaSerialize)] struct SubTest { #[yaserde(attribute)] content: Option, } - impl Default for SubTest { - fn default() -> Self { - SubTest { content: None } - } - } - let content = "/ = yaserde::de::from_str(content); diff --git a/yaserde/tests/serializer.rs b/yaserde/tests/serializer.rs index 12dfdd3..9d9fa91 100644 --- a/yaserde/tests/serializer.rs +++ b/yaserde/tests/serializer.rs @@ -177,22 +177,17 @@ fn ser_attributes() { #[test] fn ser_attributes_complex() { mod other_mod { - #[derive(YaSerialize, PartialEq, Debug)] + #[derive(YaSerialize, PartialEq, Debug, Default)] pub enum AttrEnum { #[yaserde(rename = "variant 1")] + #[default] Variant1, #[yaserde(rename = "variant 2")] Variant2, } - - impl Default for AttrEnum { - fn default() -> AttrEnum { - AttrEnum::Variant1 - } - } } - #[derive(YaSerialize, PartialEq, Debug)] + #[derive(YaSerialize, PartialEq, Debug, Default)] pub struct Struct { #[yaserde(attribute)] attr_option_string: Option, @@ -200,15 +195,6 @@ fn ser_attributes_complex() { attr_option_enum: Option, } - impl Default for Struct { - fn default() -> Struct { - Struct { - attr_option_string: None, - attr_option_enum: None, - } - } - } - serialize_and_validate!( Struct { attr_option_string: None, diff --git a/yaserde/tests/skip_if.rs b/yaserde/tests/skip_if.rs index d3394c0..918301a 100644 --- a/yaserde/tests/skip_if.rs +++ b/yaserde/tests/skip_if.rs @@ -187,7 +187,7 @@ fn skip_serializing_if_for_vec() { skipped_serializing: Vec, } impl XmlStruct { - fn check_vec(&self, _child: &Vec) -> bool { + fn check_vec(&self, _child: &[i8]) -> bool { true } } diff --git a/yaserde_derive/src/common/field.rs b/yaserde_derive/src/common/field.rs index 0aa9d83..4aaa4b6 100644 --- a/yaserde_derive/src/common/field.rs +++ b/yaserde_derive/src/common/field.rs @@ -175,6 +175,7 @@ impl YaSerdeField { } #[derive(Debug)] +#[allow(clippy::enum_variant_names)] pub enum Field { FieldString, FieldBool, diff --git a/yaserde_derive/src/de/expand_struct.rs b/yaserde_derive/src/de/expand_struct.rs index a0a707a..3539c7d 100644 --- a/yaserde_derive/src/de/expand_struct.rs +++ b/yaserde_derive/src/de/expand_struct.rs @@ -199,17 +199,17 @@ pub fn parse( .iter() .map(|field| YaSerdeField::new(field.clone())) .filter(|field| !field.is_attribute() && field.is_flatten()) - .filter_map(|field| { + .map(|field| { let value_label = field.get_value_label(); match field.get_type() { - Field::FieldStruct { .. } => Some(quote! { + Field::FieldStruct { .. } => quote! { #value_label = ::yaserde::de::from_str(&unused_xml_elements)?; - }), + }, Field::FieldOption { data_type } => match *data_type { - Field::FieldStruct { .. } => Some(quote! { + Field::FieldStruct { .. } => quote! { #value_label = ::yaserde::de::from_str(&unused_xml_elements).ok(); - }), + }, field_type => unimplemented!(r#""flatten" is not implemented for {:?}"#, field_type), }, field_type => unimplemented!(r#""flatten" is not implemented for {:?}"#, field_type), diff --git a/yaserde_derive/src/ser/expand_enum.rs b/yaserde_derive/src/ser/expand_enum.rs index 18ce4b5..56eed3a 100644 --- a/yaserde_derive/src/ser/expand_enum.rs +++ b/yaserde_derive/src/ser/expand_enum.rs @@ -33,7 +33,6 @@ pub fn serialize( let attribute_fields: Vec<_> = all_fields .clone() - .into_iter() .filter(|field| { field.is_attribute() || (field.is_flatten() && matches!(field.get_type(), Field::FieldStruct { .. }))