Restore 100% coverage after Value::None addition
Remove Value::None from is_primitive and to_kdl_value since None values
are skipped at the struct/map level and never reach the primitive-vec
serialization path. Add Vec<()> roundtrip test to cover Value::Null in
to_kdl_value.
diff --git a/src/ser.rs b/src/ser.rs
index df5e3d1..bab87e3 100644
--- a/src/ser.rs
+++ b/src/ser.rs
@@ -60,18 +60,12 @@ impl Value {
fn is_primitive(&self) -> bool {
matches!(
self,
- Value::None
- | Value::Null
- | Value::Bool(_)
- | Value::Integer(_)
- | Value::Float(_)
- | Value::String(_)
+ Value::Null | Value::Bool(_) | Value::Integer(_) | Value::Float(_) | Value::String(_)
)
}
fn to_kdl_value(&self) -> Option<KdlValue> {
match self {
- Value::None => Some(KdlValue::Null),
Value::Null => Some(KdlValue::Null),
Value::Bool(b) => Some(KdlValue::Bool(*b)),
Value::Integer(i) => Some(KdlValue::Integer(*i)),
diff --git a/tests/integration.rs b/tests/integration.rs
index 9669e6b..3f57f2a 100644
--- a/tests/integration.rs
+++ b/tests/integration.rs
@@ -956,6 +956,21 @@ fn serialize_vec_option_with_nulls() {
assert!(output.contains("#null"));
}
+#[test]
+fn serialize_vec_unit() {
+ #[derive(Serialize, Deserialize, Debug, PartialEq)]
+ struct S {
+ markers: Vec<()>,
+ }
+ let val = S {
+ markers: vec![(), ()],
+ };
+ let output = serde_kdl2::to_string(&val).unwrap();
+ assert!(output.contains("#null"));
+ let rt: S = serde_kdl2::from_str(&output).unwrap();
+ assert_eq!(val, rt);
+}
+
#[test]
fn serialize_mixed_seq_with_null() {
#[derive(Serialize, Debug)]