35 lines
681 B
Rust
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(())
|
|
}
|
|
}
|
|
} |