~repos /tide-jsx

#rust#proc-macro#jsx

git clone https://pyrossh.dev/repos/tide-jsx.git

Tide + JSX


cd4dd39b vpzomtrrfrt

5 years ago
Implement Render for Vec<T> (#40)
Files changed (2) hide show
  1. render/src/render.rs +9 -0
  2. render_tests/src/lib.rs +22 -0
render/src/render.rs CHANGED
@@ -50,6 +50,15 @@ impl<T: Render> Render for Option<T> {
50
50
  }
51
51
  }
52
52
 
53
+ impl<T: Render> Render for Vec<T> {
54
+ fn render_into<W: Write>(self, writer: &mut W) -> Result {
55
+ for elem in self {
56
+ elem.render_into(writer)?;
57
+ }
58
+ Ok(())
59
+ }
60
+ }
61
+
53
62
  /// Renders `O` or `E`
54
63
  impl<O: Render, E: Render> Render for std::result::Result<O, E> {
55
64
  fn render_into<W: Write>(self, writer: &mut W) -> Result {
render_tests/src/lib.rs CHANGED
@@ -128,6 +128,28 @@ fn number() {
128
128
  assert_eq!(html! { <p>{num}</p> }, "<p>42</p>")
129
129
  }
130
130
 
131
+ #[test]
132
+ fn vec() {
133
+ use pretty_assertions::assert_eq;
134
+ use render::html;
135
+
136
+ let list = vec!["Mouse", "Rat", "Hamster"];
137
+
138
+ assert_eq!(
139
+ html! {
140
+ <ul>
141
+ {
142
+ list
143
+ .into_iter()
144
+ .map(|text| render::rsx! { <li>{text}</li> })
145
+ .collect::<Vec<_>>()
146
+ }
147
+ </ul>
148
+ },
149
+ "<ul><li>Mouse</li><li>Rat</li><li>Hamster</li></ul>"
150
+ )
151
+ }
152
+
131
153
  mod kaki {
132
154
  // A simple HTML 5 doctype declaration
133
155
  use render::html::HTML5Doctype;