mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-22 19:28:01 +00:00
Merge pull request #1299 from dtolnay/flattenmap
Allow multiple flattened maps to see the same fields
This commit is contained in:
@@ -14,7 +14,7 @@ extern crate serde_derive;
|
||||
extern crate serde;
|
||||
use self::serde::de::{self, Unexpected};
|
||||
use self::serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use std::collections::HashMap;
|
||||
use std::collections::{BTreeMap, HashMap};
|
||||
use std::marker::PhantomData;
|
||||
|
||||
extern crate serde_test;
|
||||
@@ -1683,6 +1683,49 @@ fn test_complex_flatten() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_flatten_map_twice() {
|
||||
#[derive(Debug, PartialEq, Deserialize)]
|
||||
struct Outer {
|
||||
#[serde(flatten)]
|
||||
first: BTreeMap<String, String>,
|
||||
#[serde(flatten)]
|
||||
between: Inner,
|
||||
#[serde(flatten)]
|
||||
second: BTreeMap<String, String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Deserialize)]
|
||||
struct Inner {
|
||||
y: String,
|
||||
}
|
||||
|
||||
assert_de_tokens(
|
||||
&Outer {
|
||||
first: {
|
||||
let mut first = BTreeMap::new();
|
||||
first.insert("x".to_owned(), "X".to_owned());
|
||||
first.insert("y".to_owned(), "Y".to_owned());
|
||||
first
|
||||
},
|
||||
between: Inner { y: "Y".to_owned() },
|
||||
second: {
|
||||
let mut second = BTreeMap::new();
|
||||
second.insert("x".to_owned(), "X".to_owned());
|
||||
second
|
||||
},
|
||||
},
|
||||
&[
|
||||
Token::Map { len: None },
|
||||
Token::Str("x"),
|
||||
Token::Str("X"),
|
||||
Token::Str("y"),
|
||||
Token::Str("Y"),
|
||||
Token::MapEnd,
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_flatten_unsupported_type() {
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
|
||||
Reference in New Issue
Block a user