From 6b3777b6170bf6ead1cbc60ad108f0a2588fba2e Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 20 Jun 2020 19:02:26 -0700 Subject: [PATCH] Remove len hint specialization --- serde/src/lib.rs | 2 +- serde/src/ser/mod.rs | 33 ++------------------------------- 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/serde/src/lib.rs b/serde/src/lib.rs index c43ba6e4..f2aec304 100644 --- a/serde/src/lib.rs +++ b/serde/src/lib.rs @@ -89,7 +89,7 @@ // discussion of these features please refer to this issue: // // https://github.com/serde-rs/serde/issues/812 -#![cfg_attr(feature = "unstable", feature(specialization, never_type))] +#![cfg_attr(feature = "unstable", feature(never_type))] #![allow(unknown_lints, bare_trait_objects, deprecated)] #![cfg_attr(feature = "cargo-clippy", allow(renamed_and_removed_lints))] #![cfg_attr(feature = "cargo-clippy", deny(clippy, clippy_pedantic))] diff --git a/serde/src/ser/mod.rs b/serde/src/ser/mod.rs index 8b57c026..676b0e2f 100644 --- a/serde/src/ser/mod.rs +++ b/serde/src/ser/mod.rs @@ -1278,7 +1278,7 @@ pub trait Serializer: Sized { ::Item: Serialize, { let iter = iter.into_iter(); - let mut serializer = try!(self.serialize_seq(iter.len_hint())); + let mut serializer = try!(self.serialize_seq(iterator_len_hint(&iter))); for item in iter { try!(serializer.serialize_element(&item)); } @@ -1318,7 +1318,7 @@ pub trait Serializer: Sized { I: IntoIterator, { let iter = iter.into_iter(); - let mut serializer = try!(self.serialize_map(iter.len_hint())); + let mut serializer = try!(self.serialize_map(iterator_len_hint(&iter))); for (key, value) in iter { try!(serializer.serialize_entry(&key, &value)); } @@ -1953,35 +1953,6 @@ pub trait SerializeStructVariant { fn end(self) -> Result; } -trait LenHint: Iterator { - fn len_hint(&self) -> Option; -} - -impl LenHint for I -where - I: Iterator, -{ - #[cfg(not(feature = "unstable"))] - fn len_hint(&self) -> Option { - iterator_len_hint(self) - } - - #[cfg(feature = "unstable")] - default fn len_hint(&self) -> Option { - iterator_len_hint(self) - } -} - -#[cfg(feature = "unstable")] -impl LenHint for I -where - I: ExactSizeIterator, -{ - fn len_hint(&self) -> Option { - Some(self.len()) - } -} - fn iterator_len_hint(iter: &I) -> Option where I: Iterator,