diff --git a/serde/src/de/impls.rs b/serde/src/de/impls.rs index 1920b3eb..e2319d17 100644 --- a/serde/src/de/impls.rs +++ b/serde/src/de/impls.rs @@ -356,7 +356,7 @@ pub struct PhantomDataVisitor { marker: PhantomData, } -impl Visitor for PhantomDataVisitor where T: Deserialize { +impl Visitor for PhantomDataVisitor { type Value = PhantomData; #[inline] @@ -367,7 +367,7 @@ impl Visitor for PhantomDataVisitor where T: Deserialize { } } -impl Deserialize for PhantomData where T: Deserialize { +impl Deserialize for PhantomData { fn deserialize(deserializer: &mut D) -> Result, D::Error> where D: Deserializer, { diff --git a/testing/tests/test_gen.rs b/testing/tests/test_gen.rs index fcc4b7e4..80b85f56 100644 --- a/testing/tests/test_gen.rs +++ b/testing/tests/test_gen.rs @@ -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, +} + #[derive(Serialize, Deserialize)] struct Bounds { t: T,