anon!() { /* proc-macro */ }Expand description
§anon! Macro
The anon! macro is responsible for rendering HTML elements into a String. It supports conditionals, loops, and any expression that returns &str.
§Basic Usage
use origami_macros::anon;
let mut s = String::new();
anon!(s, div {
"Hello, World!"
});
assert_eq!(s, "<div>Hello, World!</div>");§Expressions
You can include any expression that returns &str directly in the HTML:
use origami_macros::anon;
let foo = "some_string";
let mut s = String::new();
anon!(s, div {
*foo;
});
assert_eq!(s, "<div>some_string</div>");
let mut s = String::new();
let bar = "dynamic_string";
anon!(s, div {
*format!("Hello, {}", bar).as_str(); // Using format! as an expression
});
assert_eq!(s, "<div>Hello, dynamic_string</div>");§Match Expressions
anon! supports match expressions for dynamic content:
use origami_macros::anon;
let value = "bar";
let mut s = String::new();
anon!(s, div {
match value; {
"bar" => { "Bar Component" },
_ => { "Default Component" },
}
});
assert_eq!(s, "<div>Bar Component</div>");§Conditionals
anon! supports conditionals directly:
use origami_macros::anon;
let condition = true;
let mut s = String::new();
anon!(s, div {
if condition; {
"Condition met!"
}
});
assert_eq!(s, "<div>Condition met!</div>");§Loops
You can iterate over collections with anon!:
use origami_macros::anon;
struct Points {
x: i32,
y: i32,
}
let points = [
Points { x: 1, y: 2 },
Points { x: 3, y: 4 },
];
let mut s = String::new();
anon!(s, div {
for point in points.iter(); {
div {
*point.x.to_string().as_str();
", "
*point.y.to_string().as_str();
}
}
});
assert_eq!(s, "<div><div>1, 2</div><div>3, 4</div></div>");