mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-12 05:01:03 +00:00
More readable MapDeserializer bounds
This commit is contained in:
+20
-20
@@ -11,6 +11,7 @@
|
|||||||
use lib::*;
|
use lib::*;
|
||||||
|
|
||||||
use de::{self, IntoDeserializer, Expected, SeqVisitor};
|
use de::{self, IntoDeserializer, Expected, SeqVisitor};
|
||||||
|
use self::private::{First, Second};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@@ -641,12 +642,12 @@ pub struct MapDeserializer<'de, I, E>
|
|||||||
where
|
where
|
||||||
I: Iterator,
|
I: Iterator,
|
||||||
I::Item: private::Pair,
|
I::Item: private::Pair,
|
||||||
<I::Item as private::Pair>::First: IntoDeserializer<'de, E>,
|
First<I::Item>: IntoDeserializer<'de, E>,
|
||||||
<I::Item as private::Pair>::Second: IntoDeserializer<'de, E>,
|
Second<I::Item>: IntoDeserializer<'de, E>,
|
||||||
E: de::Error,
|
E: de::Error,
|
||||||
{
|
{
|
||||||
iter: iter::Fuse<I>,
|
iter: iter::Fuse<I>,
|
||||||
value: Option<<I::Item as private::Pair>::Second>,
|
value: Option<Second<I::Item>>,
|
||||||
count: usize,
|
count: usize,
|
||||||
lifetime: PhantomData<&'de ()>,
|
lifetime: PhantomData<&'de ()>,
|
||||||
error: PhantomData<E>,
|
error: PhantomData<E>,
|
||||||
@@ -656,10 +657,8 @@ impl<'de, I, E> MapDeserializer<'de, I, E>
|
|||||||
where
|
where
|
||||||
I: Iterator,
|
I: Iterator,
|
||||||
I::Item: private::Pair,
|
I::Item: private::Pair,
|
||||||
<I::Item as private::Pair>::First: IntoDeserializer<'de,
|
First<I::Item>: IntoDeserializer<'de, E>,
|
||||||
E>,
|
Second<I::Item>: IntoDeserializer<'de, E>,
|
||||||
<I::Item as private::Pair>::Second: IntoDeserializer<'de,
|
|
||||||
E>,
|
|
||||||
E: de::Error,
|
E: de::Error,
|
||||||
{
|
{
|
||||||
/// Construct a new `MapDeserializer<I, K, V, E>`.
|
/// Construct a new `MapDeserializer<I, K, V, E>`.
|
||||||
@@ -689,9 +688,7 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn next_pair
|
fn next_pair(&mut self) -> Option<(First<I::Item>, Second<I::Item>)> {
|
||||||
(&mut self,)
|
|
||||||
-> Option<(<I::Item as private::Pair>::First, <I::Item as private::Pair>::Second)> {
|
|
||||||
match self.iter.next() {
|
match self.iter.next() {
|
||||||
Some(kv) => {
|
Some(kv) => {
|
||||||
self.count += 1;
|
self.count += 1;
|
||||||
@@ -705,8 +702,8 @@ where
|
|||||||
impl<'de, I, E> de::Deserializer<'de> for MapDeserializer<'de, I, E>
|
impl<'de, I, E> de::Deserializer<'de> for MapDeserializer<'de, I, E>
|
||||||
where I: Iterator,
|
where I: Iterator,
|
||||||
I::Item: private::Pair,
|
I::Item: private::Pair,
|
||||||
<I::Item as private::Pair>::First: IntoDeserializer<'de, E>,
|
First<I::Item>: IntoDeserializer<'de, E>,
|
||||||
<I::Item as private::Pair>::Second: IntoDeserializer<'de, E>,
|
Second<I::Item>: IntoDeserializer<'de, E>,
|
||||||
E: de::Error
|
E: de::Error
|
||||||
{
|
{
|
||||||
type Error = E;
|
type Error = E;
|
||||||
@@ -746,8 +743,8 @@ impl<'de, I, E> de::Deserializer<'de> for MapDeserializer<'de, I, E>
|
|||||||
impl<'de, I, E> de::MapVisitor<'de> for MapDeserializer<'de, I, E>
|
impl<'de, I, E> de::MapVisitor<'de> for MapDeserializer<'de, I, E>
|
||||||
where I: Iterator,
|
where I: Iterator,
|
||||||
I::Item: private::Pair,
|
I::Item: private::Pair,
|
||||||
<I::Item as private::Pair>::First: IntoDeserializer<'de, E>,
|
First<I::Item>: IntoDeserializer<'de, E>,
|
||||||
<I::Item as private::Pair>::Second: IntoDeserializer<'de, E>,
|
Second<I::Item>: IntoDeserializer<'de, E>,
|
||||||
E: de::Error
|
E: de::Error
|
||||||
{
|
{
|
||||||
type Error = E;
|
type Error = E;
|
||||||
@@ -799,8 +796,8 @@ impl<'de, I, E> de::MapVisitor<'de> for MapDeserializer<'de, I, E>
|
|||||||
impl<'de, I, E> de::SeqVisitor<'de> for MapDeserializer<'de, I, E>
|
impl<'de, I, E> de::SeqVisitor<'de> for MapDeserializer<'de, I, E>
|
||||||
where I: Iterator,
|
where I: Iterator,
|
||||||
I::Item: private::Pair,
|
I::Item: private::Pair,
|
||||||
<I::Item as private::Pair>::First: IntoDeserializer<'de, E>,
|
First<I::Item>: IntoDeserializer<'de, E>,
|
||||||
<I::Item as private::Pair>::Second: IntoDeserializer<'de, E>,
|
Second<I::Item>: IntoDeserializer<'de, E>,
|
||||||
E: de::Error
|
E: de::Error
|
||||||
{
|
{
|
||||||
type Error = E;
|
type Error = E;
|
||||||
@@ -828,8 +825,8 @@ impl<'de, I, E> de::SeqVisitor<'de> for MapDeserializer<'de, I, E>
|
|||||||
impl<'de, I, E> Clone for MapDeserializer<'de, I, E>
|
impl<'de, I, E> Clone for MapDeserializer<'de, I, E>
|
||||||
where I: Iterator + Clone,
|
where I: Iterator + Clone,
|
||||||
I::Item: private::Pair,
|
I::Item: private::Pair,
|
||||||
<I::Item as private::Pair>::First: IntoDeserializer<'de, E>,
|
First<I::Item>: IntoDeserializer<'de, E>,
|
||||||
<I::Item as private::Pair>::Second: IntoDeserializer<'de, E> + Clone,
|
Second<I::Item>: IntoDeserializer<'de, E> + Clone,
|
||||||
E: de::Error
|
E: de::Error
|
||||||
{
|
{
|
||||||
fn clone(&self) -> Self {
|
fn clone(&self) -> Self {
|
||||||
@@ -849,8 +846,8 @@ impl<'de, I, E> Clone for MapDeserializer<'de, I, E>
|
|||||||
impl<'de, I, E> Debug for MapDeserializer<'de, I, E>
|
impl<'de, I, E> Debug for MapDeserializer<'de, I, E>
|
||||||
where I: Iterator + Debug,
|
where I: Iterator + Debug,
|
||||||
I::Item: private::Pair,
|
I::Item: private::Pair,
|
||||||
<I::Item as private::Pair>::First: IntoDeserializer<'de, E>,
|
First<I::Item>: IntoDeserializer<'de, E>,
|
||||||
<I::Item as private::Pair>::Second: IntoDeserializer<'de, E> + Debug,
|
Second<I::Item>: IntoDeserializer<'de, E> + Debug,
|
||||||
E: de::Error
|
E: de::Error
|
||||||
{
|
{
|
||||||
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
||||||
@@ -1098,4 +1095,7 @@ mod private {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub type First<T> = <T as Pair>::First;
|
||||||
|
pub type Second<T> = <T as Pair>::Second;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user