cd4dd39b
—
vpzomtrrfrt 5 years ago
Implement Render for Vec<T> (#40)
- render/src/render.rs +9 -0
- 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;
|