Merge branch 'v0.6.x'

# Conflicts:
#	serde/src/de/impls.rs
#	serde_codegen/src/de.rs
This commit is contained in:
Erick Tryzelaar 2016-01-28 09:49:15 -08:00
commit 9ae47a261e
5 changed files with 29 additions and 2 deletions

View File

@ -762,7 +762,7 @@ impl Deserialize for path::PathBuf {
fn deserialize<D>(deserializer: &mut D) -> Result<path::PathBuf, D::Error>
where D: Deserializer,
{
deserializer.deserialize(PathBufVisitor)
deserializer.deserialize_string(PathBufVisitor)
}
}

View File

@ -406,6 +406,16 @@ pub trait Deserializer {
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.
///
/// The deserializer format is used to determine which format

View File

@ -949,7 +949,7 @@ fn deserialize_field_visitor(
}
}
deserializer.deserialize(__FieldVisitor::<D>{ phantom: PhantomData })
deserializer.deserialize_struct_key(__FieldVisitor::<D>{ phantom: PhantomData })
}
}
).unwrap();

View File

@ -1,4 +1,5 @@
use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
use std::path::PathBuf;
use num::FromPrimitive;
use num::bigint::{BigInt, BigUint};
@ -593,4 +594,9 @@ declare_tests! {
Token::SeqEnd,
],
}
test_path_buf {
PathBuf::from("/usr/local/lib") => vec![
Token::String("/usr/local/lib".to_owned()),
],
}
}

View File

@ -1,4 +1,5 @@
use std::collections::BTreeMap;
use std::path::{Path, PathBuf};
use num::FromPrimitive;
use num::bigint::{BigInt, BigUint};
@ -293,4 +294,14 @@ declare_ser_tests! {
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"),
],
}
}