rust-sen/sehn-serde/src/ser/macros.rs

35 lines
681 B
Rust

macro_rules! impl_ser_real {
($f:ident, $t:ident) => {
fn $f(self, v: $t) -> Result<()> {
self.write_real::<$t>(v)
}
}
}
macro_rules! tag_start {
($s:expr, $opt_enabled:expr, $name:expr) => {
if $opt_enabled {
if $name.is_empty() {
$s.tag_stack.push(false);
} else {
$s.write_bytes($name.as_bytes())?;
$s.write_delim(syntax::TAG_START_CHAR)?;
$s.tag_stack.push(true);
}
}
}
}
macro_rules! tag_end {
($s:expr, $opt_enabled:expr) => {
if $opt_enabled {
if $s.tag_stack.pop().expect("stack tag value") {
$s.write_delim(syntax::TAG_END_CHAR)
} else {
Ok(())
}
} else {
Ok(())
}
}
}