mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-27 19:17:57 +00:00
Merge branch 'v0.6.x'
# Conflicts: # serde/src/de/impls.rs # serde_codegen/src/de.rs
This commit is contained in:
@@ -762,7 +762,7 @@ impl Deserialize for path::PathBuf {
|
|||||||
fn deserialize<D>(deserializer: &mut D) -> Result<path::PathBuf, D::Error>
|
fn deserialize<D>(deserializer: &mut D) -> Result<path::PathBuf, D::Error>
|
||||||
where D: Deserializer,
|
where D: Deserializer,
|
||||||
{
|
{
|
||||||
deserializer.deserialize(PathBufVisitor)
|
deserializer.deserialize_string(PathBufVisitor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -406,6 +406,16 @@ pub trait Deserializer {
|
|||||||
self.deserialize_seq(visitor)
|
self.deserialize_seq(visitor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// This method hints that the `Deserialize` type is expecting some sort of struct key mapping.
|
||||||
|
/// This allows deserializers to choose between &str, usize, or &[u8] to properly deserialize a
|
||||||
|
/// struct key.
|
||||||
|
#[inline]
|
||||||
|
fn deserialize_struct_key<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
|
||||||
|
where V: Visitor,
|
||||||
|
{
|
||||||
|
self.deserialize(visitor)
|
||||||
|
}
|
||||||
|
|
||||||
/// Specify a format string for the deserializer.
|
/// Specify a format string for the deserializer.
|
||||||
///
|
///
|
||||||
/// The deserializer format is used to determine which format
|
/// The deserializer format is used to determine which format
|
||||||
|
|||||||
@@ -949,7 +949,7 @@ fn deserialize_field_visitor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
deserializer.deserialize(__FieldVisitor::<D>{ phantom: PhantomData })
|
deserializer.deserialize_struct_key(__FieldVisitor::<D>{ phantom: PhantomData })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
).unwrap();
|
).unwrap();
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
|
use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use num::FromPrimitive;
|
use num::FromPrimitive;
|
||||||
use num::bigint::{BigInt, BigUint};
|
use num::bigint::{BigInt, BigUint};
|
||||||
@@ -593,4 +594,9 @@ declare_tests! {
|
|||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
test_path_buf {
|
||||||
|
PathBuf::from("/usr/local/lib") => vec![
|
||||||
|
Token::String("/usr/local/lib".to_owned()),
|
||||||
|
],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
use num::FromPrimitive;
|
use num::FromPrimitive;
|
||||||
use num::bigint::{BigInt, BigUint};
|
use num::bigint::{BigInt, BigUint};
|
||||||
@@ -293,4 +294,14 @@ declare_ser_tests! {
|
|||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
test_path {
|
||||||
|
Path::new("/usr/local/lib") => &[
|
||||||
|
Token::Str("/usr/local/lib"),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
test_path_buf {
|
||||||
|
PathBuf::from("/usr/local/lib") => &[
|
||||||
|
Token::Str("/usr/local/lib"),
|
||||||
|
],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user