Expand description
Convert HTML to a Node.
Values returned from braced blocks ({ ... }) are expected to return
something that implements Into<Node>. This is already implemented for
anything that implements IntoIterator<Item = Node>, so you
can return something like a Vec<Node> or an
Iterator<Item = Node> directly.
Due to Rust’s trait implementation rules, you cannot directly return
Strings. Instead, you can use the text! macro to convert the
String to a Node::Text.
Node implements Display (and by extension ToString), so you can
turn it into a string representation easily using
Node::to_string().
See the rstml docs for supported tags and syntax.
Example
use html_node::{html, text};
let grocery_list = vec!["milk", "eggs", "bread"];
let html = html! {
<div>
<h1>Shopping List</h1>
<ul>
{ grocery_list.into_iter().zip(1..).map(|(item, i)| html! {
<li class="item">
<input type="checkbox" id={format!("item-{i}")}>
<label for={format!("item-{i}")}>{text!("{item}")}</label>
</li>
}) }
</ul>
</div>
};
let expected = "\
<div>\
<h1>Shopping List</h1>\
<ul>\
<li class=\"item\">\
<input type=\"checkbox\" id=\"item-1\">\
<label for=\"item-1\">milk</label>\
</li>\
<li class=\"item\">\
<input type=\"checkbox\" id=\"item-2\">\
<label for=\"item-2\">eggs</label>\
</li>\
<li class=\"item\">\
<input type=\"checkbox\" id=\"item-3\">\
<label for=\"item-3\">bread</label>\
</li>\
</ul>\
</div>\
";
assert_eq!(html.to_string(), expected);Macros
- Creates a
Node::Comment. - The
html!macro. - Creates a
Node::Text. - Creates a
Node::UnsafeText.
Structs
- A comment.
- A doctype.
- An element.
- A fragment.
- A text node.
- An unsafe text node.
Enums
- An HTML node.