From 224f35da9c9bd568d4f89fd7afda32657653b808 Mon Sep 17 00:00:00 2001 From: Nick Babcock Date: Wed, 15 Jan 2025 11:50:07 -0600 Subject: [PATCH] The great lifetime elision --- src/binary/de.rs | 72 ++++++++++++++++++++++----------------------- src/binary/lexer.rs | 2 +- src/binary/tape.rs | 2 +- src/common/date.rs | 6 ++-- src/copyless.rs | 2 +- src/de.rs | 4 +-- src/scalar.rs | 4 +-- src/text/de.rs | 28 ++++++++++-------- src/text/dom.rs | 8 ++--- src/text/tape.rs | 4 +-- src/text/writer.rs | 4 +-- 11 files changed, 69 insertions(+), 67 deletions(-) diff --git a/src/binary/de.rs b/src/binary/de.rs index 3c07080..56f63a8 100644 --- a/src/binary/de.rs +++ b/src/binary/de.rs @@ -18,7 +18,7 @@ pub struct BinaryReaderDeserializer<'res, RES, F, R> { config: BinaryConfig<'res, RES, F>, } -impl<'res, RES: TokenResolver, E: BinaryFlavor, R: Read> BinaryReaderDeserializer<'res, RES, E, R> { +impl BinaryReaderDeserializer<'_, RES, E, R> { /// Deserialize into provided type pub fn deserialize(&mut self) -> Result where @@ -28,8 +28,8 @@ impl<'res, RES: TokenResolver, E: BinaryFlavor, R: Read> BinaryReaderDeserialize } } -impl<'a, 'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> de::Deserializer<'de> - for &'a mut BinaryReaderDeserializer<'res, RES, F, R> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> de::Deserializer<'de> + for &'_ mut BinaryReaderDeserializer<'res, RES, F, R> { type Error = Error; @@ -82,8 +82,8 @@ impl<'a, 'res, RES: 'a, F, R> BinaryReaderMap<'a, 'res, RES, F, R> { } } -impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> MapAccess<'de> - for BinaryReaderMap<'a, 'res, RES, F, R> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> MapAccess<'de> + for BinaryReaderMap<'_, 'res, RES, F, R> { type Error = Error; @@ -133,7 +133,7 @@ struct BinaryReaderTokenDeserializer<'a, 'res, RES: 'a, F, R> { token: Token<'a>, } -impl<'a, 'res, RES: TokenResolver, F, R> BinaryReaderTokenDeserializer<'a, 'res, RES, F, R> +impl<'res, RES: TokenResolver, F, R> BinaryReaderTokenDeserializer<'_, 'res, RES, F, R> where F: BinaryFlavor, R: Read, @@ -477,14 +477,14 @@ struct BinaryReaderSeq<'a: 'a, 'res, RES: 'a, F, R> { hit_end: bool, } -impl<'a, 'de: 'a, 'res: 'de, RES: 'a, F, R> BinaryReaderSeq<'a, 'res, RES, F, R> { +impl<'a, 'res, RES: 'a, F, R> BinaryReaderSeq<'a, 'res, RES, F, R> { fn new(de: *const &'a mut BinaryReaderDeserializer<'res, RES, F, R>) -> Self { BinaryReaderSeq { de, hit_end: false } } } -impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> SeqAccess<'de> - for BinaryReaderSeq<'a, 'res, RES, F, R> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> SeqAccess<'de> + for BinaryReaderSeq<'_, 'res, RES, F, R> { type Error = Error; @@ -515,8 +515,8 @@ impl<'a, 'res, RES: 'a, F, R> BinaryReaderEnum<'a, 'res, RES, F, R> { } } -impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> de::EnumAccess<'de> - for BinaryReaderEnum<'a, 'res, RES, F, R> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> de::EnumAccess<'de> + for BinaryReaderEnum<'_, 'res, RES, F, R> { type Error = Error; type Variant = Self; @@ -533,8 +533,8 @@ impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R: Read> de::EnumA } } -impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R> de::VariantAccess<'de> - for BinaryReaderEnum<'a, 'res, RES, F, R> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, R> de::VariantAccess<'de> + for BinaryReaderEnum<'_, 'res, RES, F, R> { type Error = Error; @@ -586,7 +586,7 @@ pub struct OndemandBinaryDeserializer<'data, 'res: 'data, RES, F> { config: BinaryConfig<'res, RES, F>, } -impl<'de, 'res, RES: TokenResolver, E: BinaryFlavor> OndemandBinaryDeserializer<'de, 'res, RES, E> { +impl<'de, RES: TokenResolver, E: BinaryFlavor> OndemandBinaryDeserializer<'de, '_, RES, E> { /// Deserialize into provided type pub fn deserialize(&mut self) -> Result where @@ -596,8 +596,8 @@ impl<'de, 'res, RES: TokenResolver, E: BinaryFlavor> OndemandBinaryDeserializer< } } -impl<'a, 'de, 'res, RES: TokenResolver, F: BinaryFlavor> de::Deserializer<'de> - for &'a mut OndemandBinaryDeserializer<'de, 'res, RES, F> +impl<'de, RES: TokenResolver, F: BinaryFlavor> de::Deserializer<'de> + for &'_ mut OndemandBinaryDeserializer<'de, '_, RES, F> { type Error = Error; @@ -649,8 +649,8 @@ impl<'a, 'de: 'a, 'res: 'de, RES: 'a, F> OndemandMap<'a, 'de, 'res, RES, F> { } } -impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> MapAccess<'de> - for OndemandMap<'a, 'de, 'res, RES, F> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> MapAccess<'de> + for OndemandMap<'_, 'de, 'res, RES, F> { type Error = Error; @@ -1023,8 +1023,8 @@ impl<'a, 'de: 'a, 'res: 'de, RES: 'a, F> OndemandSeq<'a, 'de, 'res, RES, F> { } } -impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> SeqAccess<'de> - for OndemandSeq<'a, 'de, 'res, RES, F> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> SeqAccess<'de> + for OndemandSeq<'_, 'de, 'res, RES, F> { type Error = Error; @@ -1057,8 +1057,8 @@ impl<'a, 'de: 'a, 'res: 'de, RES: 'a, F> OndemandEnum<'a, 'de, 'res, RES, F> { } } -impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> de::EnumAccess<'de> - for OndemandEnum<'a, 'de, 'res, RES, F> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> de::EnumAccess<'de> + for OndemandEnum<'_, 'de, 'res, RES, F> { type Error = Error; type Variant = Self; @@ -1075,8 +1075,8 @@ impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> de::EnumAccess<'de } } -impl<'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> de::VariantAccess<'de> - for OndemandEnum<'a, 'de, 'res, RES, F> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> de::VariantAccess<'de> + for OndemandEnum<'_, 'de, 'res, RES, F> { type Error = Error; @@ -1325,7 +1325,7 @@ where } } -impl<'b, 'de, 'res, RES: TokenResolver, E: BinaryFlavor> BinaryDeserializer<'b, 'de, 'res, RES, E> { +impl<'de, RES: TokenResolver, E: BinaryFlavor> BinaryDeserializer<'_, 'de, '_, RES, E> { /// Deserialize into provided type pub fn deserialize(&self) -> Result where @@ -1356,8 +1356,8 @@ struct BinaryConfig<'res, RES, F> { flavor: F, } -impl<'a, 'b, 'de, 'res, RES: TokenResolver, F: BinaryFlavor> de::Deserializer<'de> - for &'a BinaryDeserializer<'b, 'de, 'res, RES, F> +impl<'de, RES: TokenResolver, F: BinaryFlavor> de::Deserializer<'de> + for &'_ BinaryDeserializer<'_, 'de, '_, RES, F> { type Error = Error; @@ -1430,8 +1430,8 @@ impl<'c, 'a, 'de, 'res: 'de, RES, E> BinaryMap<'c, 'a, 'de, 'res, RES, E> { } } -impl<'c, 'de, 'a, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> MapAccess<'de> - for BinaryMap<'c, 'a, 'de, 'res, RES, F> +impl<'de, 'res: 'de, RES: TokenResolver, F: BinaryFlavor> MapAccess<'de> + for BinaryMap<'_, '_, 'de, 'res, RES, F> { type Error = Error; @@ -1524,8 +1524,8 @@ fn visit_key<'b, 'de: 'b, 'res: 'de, RES: TokenResolver, F: BinaryFlavor, V: Vis } } -impl<'b, 'de, 'res: 'de, RES: TokenResolver, E: BinaryFlavor> de::Deserializer<'de> - for KeyDeserializer<'b, 'de, 'res, RES, E> +impl<'de, 'res: 'de, RES: TokenResolver, E: BinaryFlavor> de::Deserializer<'de> + for KeyDeserializer<'_, 'de, 'res, RES, E> { type Error = Error; @@ -1560,8 +1560,8 @@ struct ValueDeserializer<'c, 'b: 'c, 'de: 'b, 'res: 'de, RES, E> { tokens: &'c [BinaryToken<'de>], } -impl<'c, 'b, 'de, 'res: 'de, RES: TokenResolver, E: BinaryFlavor> de::Deserializer<'de> - for ValueDeserializer<'c, 'b, 'de, 'res, RES, E> +impl<'de, 'res: 'de, RES: TokenResolver, E: BinaryFlavor> de::Deserializer<'de> + for ValueDeserializer<'_, '_, 'de, 'res, RES, E> { type Error = Error; @@ -1710,7 +1710,7 @@ struct EnumAccess<'b, 'de: 'b, 'res: 'de, RES, E> { idx: usize, } -impl<'b, 'de, 'tokens, RES, E> de::EnumAccess<'de> for EnumAccess<'b, 'de, 'tokens, RES, E> +impl<'de, RES, E> de::EnumAccess<'de> for EnumAccess<'_, 'de, '_, RES, E> where RES: TokenResolver, E: BinaryFlavor, @@ -1787,8 +1787,8 @@ struct BinarySequence<'b, 'de: 'b, 'res: 'de, RES, E> { end_idx: usize, } -impl<'b, 'de, 'res: 'de, RES: TokenResolver, E: BinaryFlavor> SeqAccess<'de> - for BinarySequence<'b, 'de, 'res, RES, E> +impl<'de, 'res: 'de, RES: TokenResolver, E: BinaryFlavor> SeqAccess<'de> + for BinarySequence<'_, 'de, 'res, RES, E> { type Error = Error; diff --git a/src/binary/lexer.rs b/src/binary/lexer.rs index 295a80c..6c59ca9 100644 --- a/src/binary/lexer.rs +++ b/src/binary/lexer.rs @@ -219,7 +219,7 @@ pub enum Token<'a> { Id(u16), } -impl<'a> Token<'a> { +impl Token<'_> { fn write_u32(mut wtr: impl std::io::Write, num: u32) -> Result<(), std::io::Error> { wtr.write_all(&LexemeId::U32.0.to_le_bytes())?; wtr.write_all(&num.to_le_bytes()) diff --git a/src/binary/tape.rs b/src/binary/tape.rs index c6ce1fd..dcbdfaa 100644 --- a/src/binary/tape.rs +++ b/src/binary/tape.rs @@ -146,7 +146,7 @@ enum ParseState { OpenSecond = 128, } -impl<'a, 'b> ParserState<'a, 'b> { +impl<'a> ParserState<'a, '_> { fn offset(&self, data: &[u8]) -> usize { self.original_length - data.len() } diff --git a/src/common/date.rs b/src/common/date.rs index f209eb0..3a1174d 100644 --- a/src/common/date.rs +++ b/src/common/date.rs @@ -1163,7 +1163,7 @@ mod datederive { struct DateVisitor; - impl<'de> Visitor<'de> for DateVisitor { + impl Visitor<'_> for DateVisitor { type Value = Date; fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { @@ -1213,7 +1213,7 @@ mod datederive { struct DateHourVisitor; - impl<'de> Visitor<'de> for DateHourVisitor { + impl Visitor<'_> for DateHourVisitor { type Value = DateHour; fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { @@ -1254,7 +1254,7 @@ mod datederive { struct UniformDateVisitor; - impl<'de> Visitor<'de> for UniformDateVisitor { + impl Visitor<'_> for UniformDateVisitor { type Value = UniformDate; fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { diff --git a/src/copyless.rs b/src/copyless.rs index bc5355c..a35a336 100644 --- a/src/copyless.rs +++ b/src/copyless.rs @@ -7,7 +7,7 @@ pub struct VecAllocation<'a, T: 'a> { index: usize, } -impl<'a, T> VecAllocation<'a, T> { +impl VecAllocation<'_, T> { /// Consumes self and writes the given value into the allocation. // writing is safe because alloc() ensured enough capacity // and `Allocation` holds a mutable borrow to prevent anyone else diff --git a/src/de.rs b/src/de.rs index 9c4117f..6af80ad 100644 --- a/src/de.rs +++ b/src/de.rs @@ -14,7 +14,7 @@ impl ColorSequence { } } -impl<'de, 'r> de::Deserializer<'de> for &'r mut ColorSequence { +impl<'de> de::Deserializer<'de> for &'_ mut ColorSequence { type Error = Error; fn deserialize_any(self, visitor: V) -> Result @@ -73,7 +73,7 @@ impl InnerColorSequence { } } -impl<'de, 'r> de::Deserializer<'de> for &'r mut InnerColorSequence { +impl<'de> de::Deserializer<'de> for &'_ mut InnerColorSequence { type Error = Error; fn deserialize_any(self, visitor: V) -> Result diff --git a/src/scalar.rs b/src/scalar.rs index 559d672..ef34d40 100644 --- a/src/scalar.rs +++ b/src/scalar.rs @@ -149,13 +149,13 @@ impl<'a> Scalar<'a> { } } -impl<'a> fmt::Debug for Scalar<'a> { +impl fmt::Debug for Scalar<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "Scalar {{ {} }}", self) } } -impl<'a> fmt::Display for Scalar<'a> { +impl fmt::Display for Scalar<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { if self.is_ascii() { write!(f, "{}", decode_windows1252(self.data)) diff --git a/src/text/de.rs b/src/text/de.rs index 1304ba7..46a69bc 100644 --- a/src/text/de.rs +++ b/src/text/de.rs @@ -220,7 +220,7 @@ impl<'a, R, E> TextReaderMap<'a, R, E> { } } -impl<'de, 'a, R: Read, E: Encoding> de::MapAccess<'de> for TextReaderMap<'a, R, E> { +impl<'de, R: Read, E: Encoding> de::MapAccess<'de> for TextReaderMap<'_, R, E> { type Error = Error; #[inline] @@ -587,7 +587,7 @@ impl<'a, R, E> TextReaderSeq<'a, R, E> { } } -impl<'de, 'a, R, E> de::SeqAccess<'de> for TextReaderSeq<'a, R, E> +impl<'de, R, E> de::SeqAccess<'de> for TextReaderSeq<'_, R, E> where R: Read, E: Encoding, @@ -621,7 +621,7 @@ impl<'a, R, E> TextReaderEnum<'a, R, E> { } } -impl<'de, 'a, R: Read, E: Encoding> de::EnumAccess<'de> for TextReaderEnum<'a, R, E> { +impl<'de, R: Read, E: Encoding> de::EnumAccess<'de> for TextReaderEnum<'_, R, E> { type Error = Error; type Variant = Self; @@ -634,7 +634,7 @@ impl<'de, 'a, R: Read, E: Encoding> de::EnumAccess<'de> for TextReaderEnum<'a, R } } -impl<'de, 'a, R: Read, E: Encoding> de::VariantAccess<'de> for TextReaderEnum<'a, R, E> { +impl<'de, R: Read, E: Encoding> de::VariantAccess<'de> for TextReaderEnum<'_, R, E> { type Error = Error; fn unit_variant(self) -> Result<(), Self::Error> { @@ -686,7 +686,7 @@ struct PropertyReaderMap<'a, R, E> { state: usize, } -impl<'a, 'de, R, E> de::MapAccess<'de> for PropertyReaderMap<'a, R, E> +impl<'de, R, E> de::MapAccess<'de> for PropertyReaderMap<'_, R, E> where E: Encoding, R: Read, @@ -814,7 +814,7 @@ impl<'a, 'b> TextDeserializer<'a, 'b, Windows1252Encoding> { /// Convenience method for parsing the given text data and deserializing as windows1252 encoded. pub fn from_windows1252_slice( data: &'a [u8], - ) -> Result, Error> { + ) -> Result, Error> { let tape = TextTape::from_slice(data)?; Ok(TextDeserializer { kind: TextDeserializerKind::Owned { @@ -839,7 +839,9 @@ impl<'a, 'b> TextDeserializer<'a, 'b, Windows1252Encoding> { impl<'a, 'b> TextDeserializer<'a, 'b, Utf8Encoding> { /// Convenience method for parsing the given text data and deserializing as utf8 encoded. - pub fn from_utf8_slice(data: &'a [u8]) -> Result, Error> { + pub fn from_utf8_slice( + data: &'a [u8], + ) -> Result, Error> { let tape = TextTape::from_slice(data)?; Ok(TextDeserializer { kind: TextDeserializerKind::Owned { @@ -896,7 +898,7 @@ where } } -impl<'de, 'a, 'tokens, E> de::Deserializer<'de> for &'a TextDeserializer<'de, 'tokens, E> +impl<'de, E> de::Deserializer<'de> for &'_ TextDeserializer<'de, '_, E> where E: Encoding + Clone, { @@ -990,7 +992,7 @@ where } } -impl<'de, 'tokens, E> de::MapAccess<'de> for MapAccess<'de, 'tokens, E> +impl<'de, E> de::MapAccess<'de> for MapAccess<'de, '_, E> where E: Encoding + Clone, { @@ -1115,7 +1117,7 @@ macro_rules! deserialize_any_value { }; } -impl<'de, 'tokens, E> de::Deserializer<'de> for ValueDeserializer<'de, 'tokens, E> +impl<'de, E> de::Deserializer<'de> for ValueDeserializer<'de, '_, E> where E: Encoding + Clone, { @@ -1483,7 +1485,7 @@ struct PropertyMap<'de, 'tokens, E> { state: usize, } -impl<'de, 'tokens, E> de::MapAccess<'de> for PropertyMap<'de, 'tokens, E> +impl<'de, E> de::MapAccess<'de> for PropertyMap<'de, '_, E> where E: Encoding + Clone, { @@ -1522,7 +1524,7 @@ struct SeqAccess<'de, 'tokens, E> { values: ValuesIter<'de, 'tokens, E>, } -impl<'de, 'tokens, E> de::SeqAccess<'de> for SeqAccess<'de, 'tokens, E> +impl<'de, E> de::SeqAccess<'de> for SeqAccess<'de, '_, E> where E: Encoding + Clone, { @@ -1614,7 +1616,7 @@ where } } -impl<'de, 'tokens, E> de::VariantAccess<'de> for VariantDeserializer<'de, 'tokens, E> +impl<'de, E> de::VariantAccess<'de> for VariantDeserializer<'de, '_, E> where E: Encoding + Clone, { diff --git a/src/text/dom.rs b/src/text/dom.rs index 96fa318..0393daf 100644 --- a/src/text/dom.rs +++ b/src/text/dom.rs @@ -89,7 +89,7 @@ pub struct GroupEntryIter<'data, 'tokens, 'parent, E> { parent: &'parent GroupEntry<'data, 'tokens, E>, } -impl<'data, 'tokens, 'parent, E> Iterator for GroupEntryIter<'data, 'tokens, 'parent, E> +impl<'data, 'tokens, E> Iterator for GroupEntryIter<'data, 'tokens, '_, E> where E: Clone, { @@ -201,7 +201,7 @@ pub enum Reader<'data, 'tokens, E> { Value(ValueReader<'data, 'tokens, E>), } -impl<'data, 'tokens, E> Reader<'data, 'tokens, E> +impl<'data, E> Reader<'data, '_, E> where E: Encoding + Clone, { @@ -660,7 +660,7 @@ pub struct ValueReader<'data, 'tokens, E> { encoding: E, } -impl<'data, 'tokens, E> ValueReader<'data, 'tokens, E> { +impl<'data, E> ValueReader<'data, '_, E> { /// Return the token that the reader is abstracting #[inline] pub fn token(&self) -> &TextToken<'data> { @@ -674,7 +674,7 @@ impl<'data, 'tokens, E> ValueReader<'data, 'tokens, E> { } } -impl<'data, 'tokens, E> Encoding for ValueReader<'data, 'tokens, E> +impl Encoding for ValueReader<'_, '_, E> where E: Encoding, { diff --git a/src/text/tape.rs b/src/text/tape.rs index 42f09e4..b14e98b 100644 --- a/src/text/tape.rs +++ b/src/text/tape.rs @@ -158,7 +158,7 @@ pub struct TextTape<'a> { utf8_bom: bool, } -impl<'a> TextTape<'a> { +impl TextTape<'_> { /// Creates a windows 1252 object reader from the parsed tape pub fn windows1252_reader(&self) -> ObjectReader { ObjectReader::new(self, Windows1252Encoding::new()) @@ -430,7 +430,7 @@ impl<'a> TextTape<'a> { } } -impl<'a, 'b> ParserState<'a, 'b> { +impl<'a> ParserState<'a, '_> { fn offset(&self, data: &[u8]) -> usize { self.original_length - data.len() } diff --git a/src/text/writer.rs b/src/text/writer.rs index bdc4a3c..642dfbd 100644 --- a/src/text/writer.rs +++ b/src/text/writer.rs @@ -918,7 +918,7 @@ enum ReuseVec<'a> { Borrowed((&'a [u8], Vec)), } -impl<'a> ReuseVec<'a> { +impl ReuseVec<'_> { fn buffer(self) -> Vec { match self { ReuseVec::Owned(x) => x, @@ -927,7 +927,7 @@ impl<'a> ReuseVec<'a> { } } -impl<'a> Deref for ReuseVec<'a> { +impl Deref for ReuseVec<'_> { type Target = [u8]; fn deref(&self) -> &Self::Target {