diff --git a/serde/src/de/impls.rs b/serde/src/de/impls.rs index a200aaa4..dd04bc64 100644 --- a/serde/src/de/impls.rs +++ b/serde/src/de/impls.rs @@ -986,6 +986,19 @@ impl Deserialize for Duration { _ => Err(Error::unknown_field(value)), } } + + fn visit_bytes(self, value: &[u8]) -> Result + where E: Error, + { + match value { + b"secs" => Ok(Field::Secs), + b"nanos" => Ok(Field::Nanos), + _ => { + let value = String::from_utf8_lossy(value); + Err(Error::unknown_field(&value)) + } + } + } } deserializer.deserialize_struct_field(FieldVisitor)