diff --git a/derive/src/decodable.rs b/derive/src/decodable.rs index 8bc3ddd..6cb52c8 100644 --- a/derive/src/decodable.rs +++ b/derive/src/decodable.rs @@ -15,7 +15,7 @@ pub(crate) struct DeriveDecodableStruct { } impl DeriveDecodableStruct { - pub fn derive(s: Structure<'_>, data: &DataStruct, name: &Ident, attrs: &Vec) -> TokenStream { + pub fn derive(s: Structure<'_>, data: &DataStruct, name: &Ident, attrs: &[Attribute]) -> TokenStream { let tag = extract_tag(name, attrs); diff --git a/derive/src/encodable.rs b/derive/src/encodable.rs index 83a73aa..ec4ae8f 100644 --- a/derive/src/encodable.rs +++ b/derive/src/encodable.rs @@ -12,7 +12,7 @@ pub(crate) struct DeriveEncodableStruct { } impl DeriveEncodableStruct { - pub fn derive(s: Structure<'_>, data: &DataStruct, name: &Ident, attrs: &Vec) -> TokenStream { + pub fn derive(s: Structure<'_>, data: &DataStruct, name: &Ident, attrs: &[Attribute]) -> TokenStream { let tag = extract_tag(name, attrs); diff --git a/derive/src/lib.rs b/derive/src/lib.rs index 8e68e3d..e78e470 100644 --- a/derive/src/lib.rs +++ b/derive/src/lib.rs @@ -88,7 +88,7 @@ impl FieldAttrs { } } -fn extract_tag(name: &Ident, attrs: &Vec) -> u8 { +fn extract_tag(name: &Ident, attrs: &[Attribute]) -> u8 { let mut tag = None; for attr in attrs { diff --git a/src/tagged.rs b/src/tagged.rs index 029735d..1596215 100644 --- a/src/tagged.rs +++ b/src/tagged.rs @@ -74,6 +74,7 @@ impl<'a> TaggedSlice<'a> { } /// Get the SIMPLE-TLV [`Header`] for this [`TaggedSlice`] value + #[allow(clippy::unnecessary_wraps)] fn header(&self) -> Result
{ Ok(Header { tag: self.tag(), diff --git a/src/traits.rs b/src/traits.rs index 730664c..578d0ca 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -179,6 +179,13 @@ where TaggedContainer: Tagged + Container { fn encoded_length(&self) -> Result { + #[allow(clippy::redundant_closure)] + // if we do as clippy tells, we get: + // 183 | let value_length = self.fields(Length::try_from)?; + // | ^^^^^^ one type is more general than the other + // | + // = note: expected type `FnOnce<(&[&dyn Encodable],)>` + // found type `FnOnce<(&[&dyn Encodable],)>` let value_length = self.fields(|encodables| Length::try_from(encodables))?; Header::new(Self::tag(), value_length)?.encoded_length() + value_length } @@ -268,8 +275,8 @@ impl_array!( #[cfg(test)] mod tests { - use core::convert::{TryFrom, TryInto}; - use crate::{Decodable, Decoder, Encodable, Encoder, Error, Length, Result, Tag, TaggedSlice}; + use core::convert::TryFrom; + use crate::{Decodable, Encodable, Error, Result, Tag, TaggedSlice}; use super::{Taggable, Tagged, Container}; // The types [u8; 2], [u8; 3], [u8; 4] stand in here for any types for the fields diff --git a/tests/derive.rs b/tests/derive.rs index dbd8576..16a9834 100644 --- a/tests/derive.rs +++ b/tests/derive.rs @@ -5,13 +5,13 @@ use simple_tlv::{Decodable, Encodable}; #[derive(Clone, Copy, Debug, Decodable, Encodable, Eq, PartialEq)] -#[tlv(tag = "0xAA")] +#[tlv(tag = "AA")] struct S { - #[tlv(tag = "0x11")] + #[tlv(tag = "11")] x: [u8; 2], - #[tlv(tag = "0x22")] + #[tlv(tag = "22")] y: [u8; 3], - #[tlv(tag = "0x33")] + #[tlv(tag = "33")] z: [u8; 4], }