mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-07-19 15:45:45 +00:00
Merge pull request #2436 from Mingun/flatten-ignored-any
Allow to flatten `IgnoredAny`
This commit is contained in:
@@ -107,7 +107,7 @@ use de::{
|
|||||||
/// # Ok(())
|
/// # Ok(())
|
||||||
/// # }
|
/// # }
|
||||||
/// ```
|
/// ```
|
||||||
#[derive(Copy, Clone, Debug, Default)]
|
#[derive(Copy, Clone, Debug, Default, PartialEq)]
|
||||||
pub struct IgnoredAny;
|
pub struct IgnoredAny;
|
||||||
|
|
||||||
impl<'de> Visitor<'de> for IgnoredAny {
|
impl<'de> Visitor<'de> for IgnoredAny {
|
||||||
|
|||||||
@@ -2794,6 +2794,13 @@ where
|
|||||||
visitor.visit_unit()
|
visitor.visit_unit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn deserialize_ignored_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
|
||||||
|
where
|
||||||
|
V: Visitor<'de>,
|
||||||
|
{
|
||||||
|
visitor.visit_unit()
|
||||||
|
}
|
||||||
|
|
||||||
forward_to_deserialize_other! {
|
forward_to_deserialize_other! {
|
||||||
deserialize_bool()
|
deserialize_bool()
|
||||||
deserialize_i8()
|
deserialize_i8()
|
||||||
@@ -2816,7 +2823,6 @@ where
|
|||||||
deserialize_tuple(usize)
|
deserialize_tuple(usize)
|
||||||
deserialize_tuple_struct(&'static str, usize)
|
deserialize_tuple_struct(&'static str, usize)
|
||||||
deserialize_identifier()
|
deserialize_identifier()
|
||||||
deserialize_ignored_any()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
clippy::uninlined_format_args,
|
clippy::uninlined_format_args,
|
||||||
)]
|
)]
|
||||||
|
|
||||||
use serde::de::{self, MapAccess, Unexpected, Visitor};
|
use serde::de::{self, IgnoredAny, MapAccess, Unexpected, Visitor};
|
||||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||||
|
|
||||||
use std::collections::{BTreeMap, HashMap};
|
use std::collections::{BTreeMap, HashMap};
|
||||||
@@ -2697,6 +2697,31 @@ fn test_flatten_option() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_flatten_ignored_any() {
|
||||||
|
#[derive(Deserialize, PartialEq, Debug)]
|
||||||
|
struct Outer {
|
||||||
|
#[serde(flatten)]
|
||||||
|
inner: IgnoredAny,
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_de_tokens(
|
||||||
|
&Outer { inner: IgnoredAny },
|
||||||
|
&[Token::Map { len: None }, Token::MapEnd],
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_de_tokens(
|
||||||
|
&Outer { inner: IgnoredAny },
|
||||||
|
&[
|
||||||
|
Token::Struct {
|
||||||
|
name: "DoNotMatter",
|
||||||
|
len: 0,
|
||||||
|
},
|
||||||
|
Token::StructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_transparent_struct() {
|
fn test_transparent_struct() {
|
||||||
#[derive(Serialize, Deserialize, PartialEq, Debug)]
|
#[derive(Serialize, Deserialize, PartialEq, Debug)]
|
||||||
|
|||||||
Reference in New Issue
Block a user