ahecha_html/render/render_string/
numbers.rs

1use std::fmt::{Result, Write};
2
3macro_rules! impl_renderable {
4  ($($t:ty),*) => {
5    $(
6      impl crate::render::RenderString for $t {
7        fn render_into<W: Write>(self, writer: &mut W) -> Result {
8          write!(writer, "{}", self)
9        }
10      }
11
12      impl crate::render::RenderString for & $t {
13        fn render_into<W: Write>(self, writer: &mut W) -> Result {
14          write!(writer, "{}", self)
15        }
16      }
17    )*
18  };
19}
20
21impl_renderable!(u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize, f32, f64);
22
23#[cfg(test)]
24mod test {
25  use crate::{
26    html::{Element, Node},
27    render::RenderString,
28    Children, NodeId,
29  };
30
31  #[test]
32  fn test_render_into() {
33    let element = Element {
34      name: "div",
35      attributes: Default::default(),
36      children: Children::default()
37        .set(Node::Element(
38          Element {
39            name: "span",
40            attributes: Default::default(),
41            children: Children::default()
42              .set(Node::Text("Hello".to_owned()))
43              .set(Node::Text(" ".to_owned()))
44              .set(Node::Text("1".to_owned())),
45          },
46          NodeId::new(),
47        ))
48        .set(Node::Text(", World 2".to_owned())),
49    };
50
51    assert_eq!(element.render(), "<div><span>Hello 1</span>, World 2</div>");
52  }
53}