Impl Deserialize for PhantomData<T> for all T

This commit is contained in:
David Tolnay 2016-07-21 23:22:38 -07:00
parent 49ff56aa15
commit 25a5dd1579
No known key found for this signature in database
GPG Key ID: F9BA143B95FF6D82
2 changed files with 9 additions and 2 deletions

View File

@ -356,7 +356,7 @@ pub struct PhantomDataVisitor<T> {
marker: PhantomData<T>,
}
impl<T> Visitor for PhantomDataVisitor<T> where T: Deserialize {
impl<T> Visitor for PhantomDataVisitor<T> {
type Value = PhantomData<T>;
#[inline]
@ -367,7 +367,7 @@ impl<T> Visitor for PhantomDataVisitor<T> where T: Deserialize {
}
}
impl<T> Deserialize for PhantomData<T> where T: Deserialize {
impl<T> Deserialize for PhantomData<T> {
fn deserialize<D>(deserializer: &mut D) -> Result<PhantomData<T>, D::Error>
where D: Deserializer,
{

View File

@ -6,6 +6,8 @@ extern crate serde;
use self::serde::ser::{Serialize, Serializer};
use self::serde::de::{Deserialize, Deserializer};
use std::marker::PhantomData;
//////////////////////////////////////////////////////////////////////////
#[derive(Serialize, Deserialize)]
@ -23,6 +25,11 @@ struct WithRef<'a, T: 'a> {
x: X,
}
#[derive(Serialize, Deserialize)]
struct PhantomX {
x: PhantomData<X>,
}
#[derive(Serialize, Deserialize)]
struct Bounds<T: Serialize + Deserialize> {
t: T,