Expand description
§askama-enum
Implement different Askama templates for different enum variants.
You can add a default #[template]
for variants that don’t have a specific #[template]
attribute.
If omitted, then every variant needs its own #[template]
attribute.
The #[template]
attribute is not interpreted, but simply copied to be used by askama.
#[derive(EnumTemplate)]
#[template(ext = "html", source = "default")] // default, optional
enum MyEnum<'a, T: std::fmt::Display> {
// uses the default `#[template]`
A,
// uses specific `#[template]`
#[template(ext = "html", source = "B")]
B,
// you can use tuple structs
#[template(
ext = "html",
source = "{{self.0}} {{self.1}} {{self.2}} {{self.3}}",
)]
C(u8, &'a u16, u32, &'a u64),
// and named fields, too
#[template(ext = "html", source = "{{some}} {{fields}}")]
D { some: T, fields: T },
}
assert_eq!(
MyEnum::A::<&str>.to_string(),
"default",
);
assert_eq!(
MyEnum::B::<&str>.to_string(),
"B",
);
assert_eq!(
MyEnum::C::<&str>(1, &2, 3, &4).to_string(),
"1 2 3 4",
);
assert_eq!(
MyEnum::D { some: "some", fields: "fields" }.to_string(),
"some fields",
);
Derive Macros§
- Enum
Template - Implement different Askama templates for different enum variants