diff --git a/src/de.rs b/src/de.rs index 6c2f97f4..2edd54bf 100644 --- a/src/de.rs +++ b/src/de.rs @@ -1247,7 +1247,7 @@ impl<'de, 'document> de::Deserializer<'de> for &mut DeserializerFromEvents<'de, } Event::SequenceEnd => panic!("unexpected end of sequence"), Event::MappingEnd => panic!("unexpected end of mapping"), - Event::Void => break Err(error::new(ErrorImpl::EndOfStream)), + Event::Void => break visitor.visit_none(), } } // The de::Error impl creates errors with unknown line and column. Fill diff --git a/tests/test_de.rs b/tests/test_de.rs index 33c8ffd6..24845d32 100644 --- a/tests/test_de.rs +++ b/tests/test_de.rs @@ -556,6 +556,14 @@ fn test_no_required_fields() { let expected = BTreeMap::new(); let deserialized: BTreeMap = serde_yaml::from_str(document).unwrap(); assert_eq!(expected, deserialized); + + let expected = None; + let deserialized: Option = serde_yaml::from_str(document).unwrap(); + assert_eq!(expected, deserialized); + + let expected = Value::Null; + let deserialized: Value = serde_yaml::from_str(document).unwrap(); + assert_eq!(expected, deserialized); } }