use crate::Value; use serde::Serialize; impl Serialize for Value { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { match self { Value::Null => serializer.serialize_unit(), Value::Bool(b) => serializer.serialize_bool(*b), Value::Number(n) => n.serialize(serializer), Value::String(s) => serializer.serialize_str(s), Value::Sequence(seq) => seq.serialize(serializer), Value::Mapping(hash) => { use serde::ser::SerializeMap; let mut map = serializer.serialize_map(Some(hash.len()))?; for (k, v) in hash { map.serialize_entry(k, v)?; } map.end() } } } }