From c97d1d21f9374c3b9de76c62b318e15c40b1c57d Mon Sep 17 00:00:00 2001 From: Marc-Antoine Arnaud Date: Tue, 15 May 2018 19:35:14 +0200 Subject: [PATCH] add basic type serialisation (bool, char and numbers) --- yaserde/src/lib.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/yaserde/src/lib.rs b/yaserde/src/lib.rs index 5b9df7d..a2034f7 100644 --- a/yaserde/src/lib.rs +++ b/yaserde/src/lib.rs @@ -8,6 +8,7 @@ extern crate xml; extern crate yaserde_derive; use std::io::{Read, Write}; +use xml::writer::XmlEvent; pub mod de; pub mod ser; @@ -36,3 +37,33 @@ pub trait Visitor<'de>: Sized { self.visit_str(&v) } } + +macro_rules! serialize_type { + ($type:ty) => ( + impl YaSerialize for $type { + fn serialize(&self, writer: &mut ser::Serializer) -> Result<(), String> { + let content = format!("{}", self); + let event = XmlEvent::characters(&content); + let _ret = writer.write(event); + Ok(()) + } + } + ) +} + +serialize_type!(bool); +serialize_type!(char); + +serialize_type!(u8); +serialize_type!(u16); +serialize_type!(u32); +serialize_type!(u64); + +serialize_type!(i8); +serialize_type!(i16); +serialize_type!(i32); +serialize_type!(i64); + +serialize_type!(f32); +serialize_type!(f64); +