Merge pull request #1841 from dtolnay/lenhint
Remove len hint specialization
This commit is contained in:
commit
8ff11dc234
@ -89,7 +89,7 @@
|
|||||||
// discussion of these features please refer to this issue:
|
// discussion of these features please refer to this issue:
|
||||||
//
|
//
|
||||||
// https://github.com/serde-rs/serde/issues/812
|
// 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)]
|
#![allow(unknown_lints, bare_trait_objects, deprecated)]
|
||||||
#![cfg_attr(feature = "cargo-clippy", allow(renamed_and_removed_lints))]
|
#![cfg_attr(feature = "cargo-clippy", allow(renamed_and_removed_lints))]
|
||||||
#![cfg_attr(feature = "cargo-clippy", deny(clippy, clippy_pedantic))]
|
#![cfg_attr(feature = "cargo-clippy", deny(clippy, clippy_pedantic))]
|
||||||
|
@ -1278,7 +1278,7 @@ pub trait Serializer: Sized {
|
|||||||
<I as IntoIterator>::Item: Serialize,
|
<I as IntoIterator>::Item: Serialize,
|
||||||
{
|
{
|
||||||
let iter = iter.into_iter();
|
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 {
|
for item in iter {
|
||||||
try!(serializer.serialize_element(&item));
|
try!(serializer.serialize_element(&item));
|
||||||
}
|
}
|
||||||
@ -1318,7 +1318,7 @@ pub trait Serializer: Sized {
|
|||||||
I: IntoIterator<Item = (K, V)>,
|
I: IntoIterator<Item = (K, V)>,
|
||||||
{
|
{
|
||||||
let iter = iter.into_iter();
|
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 {
|
for (key, value) in iter {
|
||||||
try!(serializer.serialize_entry(&key, &value));
|
try!(serializer.serialize_entry(&key, &value));
|
||||||
}
|
}
|
||||||
@ -1953,35 +1953,6 @@ pub trait SerializeStructVariant {
|
|||||||
fn end(self) -> Result<Self::Ok, Self::Error>;
|
fn end(self) -> Result<Self::Ok, Self::Error>;
|
||||||
}
|
}
|
||||||
|
|
||||||
trait LenHint: Iterator {
|
|
||||||
fn len_hint(&self) -> Option<usize>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<I> LenHint for I
|
|
||||||
where
|
|
||||||
I: Iterator,
|
|
||||||
{
|
|
||||||
#[cfg(not(feature = "unstable"))]
|
|
||||||
fn len_hint(&self) -> Option<usize> {
|
|
||||||
iterator_len_hint(self)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "unstable")]
|
|
||||||
default fn len_hint(&self) -> Option<usize> {
|
|
||||||
iterator_len_hint(self)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "unstable")]
|
|
||||||
impl<I> LenHint for I
|
|
||||||
where
|
|
||||||
I: ExactSizeIterator,
|
|
||||||
{
|
|
||||||
fn len_hint(&self) -> Option<usize> {
|
|
||||||
Some(self.len())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn iterator_len_hint<I>(iter: &I) -> Option<usize>
|
fn iterator_len_hint<I>(iter: &I) -> Option<usize>
|
||||||
where
|
where
|
||||||
I: Iterator,
|
I: Iterator,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user