Fine tune serde.

This commit is contained in:
Stephen Chung
2022-11-22 15:38:16 +08:00
parent be040287dc
commit b2e4efd872
4 changed files with 29 additions and 7 deletions

View File

@@ -127,20 +127,20 @@ impl<'de> Visitor<'de> for DynamicVisitor {
#[inline(always)]
fn visit_char<E: Error>(self, v: char) -> Result<Self::Value, E> {
self.visit_string(v.to_string())
Ok(v.into())
}
#[inline(always)]
fn visit_str<E: Error>(self, v: &str) -> Result<Self::Value, E> {
Ok(v.into())
}
#[inline(always)]
fn visit_borrowed_str<E: Error>(self, v: &str) -> Result<Self::Value, E> {
self.visit_str(v)
}
#[inline(always)]
fn visit_string<E: Error>(self, v: String) -> Result<Self::Value, E> {
Ok(v.into())
}
#[inline(always)]
fn visit_bytes<E: Error>(self, v: &[u8]) -> Result<Self::Value, E> {
Ok(Dynamic::from_blob(v.to_vec()))
}
#[inline(always)]
fn visit_unit<E: Error>(self) -> Result<Self::Value, E> {

View File

@@ -20,7 +20,7 @@ impl Serialize for Dynamic {
Union::Unit(..) => ser.serialize_unit(),
Union::Bool(x, ..) => ser.serialize_bool(x),
Union::Str(ref s, ..) => ser.serialize_str(s.as_str()),
Union::Char(c, ..) => ser.serialize_str(&c.to_string()),
Union::Char(c, ..) => ser.serialize_char(c),
#[cfg(not(feature = "only_i32"))]
Union::Int(x, ..) => ser.serialize_i64(x),
@@ -58,7 +58,7 @@ impl Serialize for Dynamic {
#[cfg(not(feature = "no_index"))]
Union::Array(ref a, ..) => (**a).serialize(ser),
#[cfg(not(feature = "no_index"))]
Union::Blob(ref a, ..) => (**a).serialize(ser),
Union::Blob(ref a, ..) => ser.serialize_bytes(&**a),
#[cfg(not(feature = "no_object"))]
Union::Map(ref m, ..) => {
let mut map = ser.serialize_map(Some(m.len()))?;