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); +