diff --git a/serde2/src/de2.rs b/serde2/src/de2.rs index 091c477d..260f9142 100644 --- a/serde2/src/de2.rs +++ b/serde2/src/de2.rs @@ -31,6 +31,10 @@ pub trait Visitor, R, E> { Err(d.syntax_error()) } + fn visit_string(&mut self, d: &mut D, _v: String) -> Result { + Err(d.syntax_error()) + } + fn visit_option< V: OptionVisitor >(&mut self, d: &mut D, _visitor: V) -> Result { @@ -103,6 +107,25 @@ impl< /////////////////////////////////////////////////////////////////////////////// +impl< + D: Deserializer, + E, +> Deserialize for String { + fn deserialize(d: &mut D) -> Result { + struct Visitor; + + impl, E> self::Visitor for Visitor { + fn visit_string(&mut self, _d: &mut D, v: String) -> Result { + Ok(v) + } + } + + d.visit(&mut Visitor) + } +} + +/////////////////////////////////////////////////////////////////////////////// + impl< T: Deserialize, D: Deserializer,