use std::fmt::Display;
use serde::Serializer;
pub fn serialize<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
T: Display,
{
serializer.serialize_str(&value.to_string())
}
#[cfg(test)]
mod tests {
use crate::Value;
use serde::Serialize;
#[test]
fn can_stringify_value() {
#[derive(Serialize)]
struct Foo {
#[serde(with = "crate::serializers::stringify")]
v: Value,
}
let value_string_pairs = [
(Value::u1(0), "0b0"),
(Value::u1(1), "0b1"),
(Value::u4(6), "0x6"),
];
for (v, want) in value_string_pairs {
assert_eq!(
serde_json::to_value(&Foo { v }).unwrap(),
serde_json::json!({ "v": want }),
);
}
}
}