| use crate::Value; |
| use serde::Serialize; |
| |
| impl Serialize for Value { |
| fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> |
| 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() |
| } |
| } |
| } |
| } |