Skip to main content

Template

Trait Template 

Source
pub trait Template: Display + FastWritable {
    const SIZE_HINT: usize;

    // Required method
    fn render_into_with_values(
        &self,
        writer: &mut dyn Write,
        values: &dyn Values,
    ) -> Result<(), Error>;

    // Provided methods
    fn render(&self) -> Result<String, Error> { ... }
    fn render_with_values(&self, values: &dyn Values) -> Result<String, Error> { ... }
    fn render_into(&self, writer: &mut dyn Write) -> Result<(), Error> { ... }
    fn write_into(&self, writer: &mut dyn Write) -> Result<(), Error> { ... }
    fn write_into_with_values(
        &self,
        writer: &mut dyn Write,
        values: &dyn Values,
    ) -> Result<(), Error> { ... }
}
Expand description

Main Template trait; implementations are generally derived

If you need an object-safe template, use DynTemplate.

§Rendering performance

When rendering a askama template, you should prefer the methods

over .to_string() or format!(). While .to_string() and format!() give you the same result, they generally perform much worse than askama’s own methods, because fmt::Write uses dynamic methods calls instead of monomorphised code. On average, expect .to_string() to be 100% to 200% slower than .render().

Required Associated Constants§

Source

const SIZE_HINT: usize

Provides a rough estimate of the expanded length of the rendered template. Larger values result in higher memory usage but fewer reallocations. Smaller values result in the opposite. This value only affects render. It does not take effect when calling render_into, write_into, the fmt::Display implementation, or the blanket ToString::to_string implementation.

Required Methods§

Source

fn render_into_with_values( &self, writer: &mut dyn Write, values: &dyn Values, ) -> Result<(), Error>

Renders the template to the given writer fmt buffer with provided Values.

§Errors

It internally uses the core::fmt::Write trait so it can fail and return Err for the same reasons. For other potential errors, please take a look at the Error enum variants documentation.

Provided Methods§

Source

fn render(&self) -> Result<String, Error>

Helper method which allocates a new String and renders into it.

§Errors

It internally uses the core::fmt::Write trait so it can fail and return Err for the same reasons. For other potential errors, please take a look at the Error enum variants documentation.

Source

fn render_with_values(&self, values: &dyn Values) -> Result<String, Error>

Helper method which allocates a new String and renders into it with provided Values.

§Errors

It internally uses the core::fmt::Write trait so it can fail and return Err for the same reasons. For other potential errors, please take a look at the Error enum variants documentation.

Source

fn render_into(&self, writer: &mut dyn Write) -> Result<(), Error>

Renders the template to the given writer fmt buffer.

§Errors

It internally uses the core::fmt::Write trait so it can fail and return Err for the same reasons. For other potential errors, please take a look at the Error enum variants documentation.

Source

fn write_into(&self, writer: &mut dyn Write) -> Result<(), Error>

Renders the template to the given writer io buffer.

§Errors

It internally uses the std::io::Write trait so it can fail and return Err for the same reasons. For other potential errors, please take a look at the Error enum variants documentation.

Source

fn write_into_with_values( &self, writer: &mut dyn Write, values: &dyn Values, ) -> Result<(), Error>

Renders the template to the given writer io buffer with provided Values.

§Errors

It internally uses the std::io::Write trait so it can fail and return Err for the same reasons. For other potential errors, please take a look at the Error enum variants documentation.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T> Template for &T
where T: Template + ?Sized,

Source§

const SIZE_HINT: usize = T::SIZE_HINT

Source§

fn render(&self) -> Result<String, Error>

Source§

fn render_with_values(&self, values: &dyn Values) -> Result<String, Error>

Source§

fn render_into(&self, writer: &mut dyn Write) -> Result<(), Error>

Source§

fn render_into_with_values( &self, writer: &mut dyn Write, values: &dyn Values, ) -> Result<(), Error>

Source§

fn write_into(&self, writer: &mut dyn Write) -> Result<(), Error>

Source§

fn write_into_with_values( &self, writer: &mut dyn Write, values: &dyn Values, ) -> Result<(), Error>

Implementors§

Source§

impl Template for Meter

Source§

const SIZE_HINT: usize = 77usize

Source§

impl Template for Progress

Source§

const SIZE_HINT: usize = 88usize

Source§

impl Template for Skeleton

Source§

const SIZE_HINT: usize = 44usize

Source§

impl Template for Spinner

Source§

const SIZE_HINT: usize = 60usize

Source§

impl<'a> Template for Accordion<'a>

Source§

const SIZE_HINT: usize = 263usize

Source§

impl<'a> Template for Alert<'a>

Source§

const SIZE_HINT: usize = 109usize

Source§

impl<'a> Template for Avatar<'a>

Source§

const SIZE_HINT: usize = 39usize

Source§

impl<'a> Template for AvatarGroup<'a>

Source§

const SIZE_HINT: usize = 39usize

Source§

impl<'a> Template for Badge<'a>

Source§

const SIZE_HINT: usize = 28usize

Source§

impl<'a> Template for Breadcrumbs<'a>

Source§

const SIZE_HINT: usize = 150usize

Source§

impl<'a> Template for BulkActionBar<'a>

Source§

const SIZE_HINT: usize = 92usize

Source§

impl<'a> Template for Button<'a>

Source§

const SIZE_HINT: usize = 57usize

Source§

impl<'a> Template for ButtonGroup<'a>

Source§

const SIZE_HINT: usize = 51usize

Source§

impl<'a> Template for Callout<'a>

Source§

const SIZE_HINT: usize = 101usize

Source§

impl<'a> Template for Card<'a>

Source§

const SIZE_HINT: usize = 154usize

Source§

impl<'a> Template for CheckRow<'a>

Source§

const SIZE_HINT: usize = 149usize

Source§

impl<'a> Template for Checklist<'a>

Source§

const SIZE_HINT: usize = 454usize

Source§

impl<'a> Template for CodeBlock<'a>

Source§

const SIZE_HINT: usize = 185usize

Source§

impl<'a> Template for CodeGrid<'a>

Source§

const SIZE_HINT: usize = 178usize

Source§

impl<'a> Template for ConfirmAction<'a>

Source§

const SIZE_HINT: usize = 166usize

Source§

impl<'a> Template for ContextSwitcher<'a>

Source§

const SIZE_HINT: usize = 534usize

Source§

impl<'a> Template for CopyableValue<'a>

Source§

const SIZE_HINT: usize = 236usize

Source§

impl<'a> Template for CredentialStatusList<'a>

Source§

const SIZE_HINT: usize = 294usize

Source§

impl<'a> Template for CurrentUpload<'a>

Source§

const SIZE_HINT: usize = 225usize

Source§

impl<'a> Template for DataTable<'a>

Source§

const SIZE_HINT: usize = 340usize

Source§

impl<'a> Template for DefinitionList<'a>

Source§

const SIZE_HINT: usize = 120usize

Source§

impl<'a> Template for Drawer<'a>

Source§

const SIZE_HINT: usize = 392usize

Source§

impl<'a> Template for Dropzone<'a>

Source§

const SIZE_HINT: usize = 290usize

Source§

impl<'a> Template for EmptyState<'a>

Source§

const SIZE_HINT: usize = 136usize

Source§

impl<'a> Template for Faq<'a>

Source§

const SIZE_HINT: usize = 177usize

Source§

impl<'a> Template for FeatureGrid<'a>

Source§

const SIZE_HINT: usize = 236usize

Source§

impl<'a> Template for Feed<'a>

Source§

const SIZE_HINT: usize = 256usize

Source§

impl<'a> Template for Field<'a>

Source§

const SIZE_HINT: usize = 88usize

Source§

impl<'a> Template for FilterBar<'a>

Source§

const SIZE_HINT: usize = 115usize

Source§

impl<'a> Template for Form<'a>

Source§

const SIZE_HINT: usize = 77usize

Source§

impl<'a> Template for FormActions<'a>

Source§

const SIZE_HINT: usize = 106usize

Source§

impl<'a> Template for FormPanel<'a>

Source§

const SIZE_HINT: usize = 266usize

Source§

impl<'a> Template for FormSection<'a>

Source§

const SIZE_HINT: usize = 203usize

Source§

impl<'a> Template for Framed<'a>

Source§

const SIZE_HINT: usize = 26usize

Source§

impl<'a> Template for Grid<'a>

Source§

const SIZE_HINT: usize = 26usize

Source§

impl<'a> Template for IconButton<'a>

Source§

const SIZE_HINT: usize = 86usize

Source§

impl<'a> Template for InlineFormRow<'a>

Source§

const SIZE_HINT: usize = 219usize

Source§

impl<'a> Template for Input<'a>

Source§

const SIZE_HINT: usize = 89usize

Source§

impl<'a> Template for InputGroup<'a>

Source§

const SIZE_HINT: usize = 90usize

Source§

impl<'a> Template for Kbd<'a>

Source§

const SIZE_HINT: usize = 31usize

Source§

impl<'a> Template for MarkdownTextarea<'a>

Source§

const SIZE_HINT: usize = 126usize

Source§

impl<'a> Template for MarketingSection<'a>

Source§

const SIZE_HINT: usize = 165usize

Source§

impl<'a> Template for MarketingStepGrid<'a>

Source§

const SIZE_HINT: usize = 233usize

Source§

impl<'a> Template for Menu<'a>

Source§

const SIZE_HINT: usize = 136usize

Source§

impl<'a> Template for Minibuffer<'a>

Source§

const SIZE_HINT: usize = 248usize

Source§

impl<'a> Template for MinibufferEcho<'a>

Source§

const SIZE_HINT: usize = 90usize

Source§

impl<'a> Template for Modal<'a>

Source§

const SIZE_HINT: usize = 386usize

Source§

impl<'a> Template for Modeline<'a>

Source§

const SIZE_HINT: usize = 105usize

Source§

impl<'a> Template for ModelineSegment<'a>

Source§

const SIZE_HINT: usize = 67usize

Source§

impl<'a> Template for NavItem<'a>

Source§

const SIZE_HINT: usize = 87usize

Source§

impl<'a> Template for NavSection<'a>

Source§

const SIZE_HINT: usize = 37usize

Source§

impl<'a> Template for ObjectFieldset<'a>

Source§

const SIZE_HINT: usize = 173usize

Source§

impl<'a> Template for PageHeader<'a>

Source§

const SIZE_HINT: usize = 257usize

Source§

impl<'a> Template for Pagination<'a>

Source§

const SIZE_HINT: usize = 151usize

Source§

impl<'a> Template for Panel<'a>

Source§

const SIZE_HINT: usize = 165usize

Source§

impl<'a> Template for Popover<'a>

Source§

const SIZE_HINT: usize = 142usize

Source§

impl<'a> Template for PricingPlans<'a>

Source§

const SIZE_HINT: usize = 242usize

Source§

impl<'a> Template for Range<'a>

Source§

const SIZE_HINT: usize = 93usize

Source§

impl<'a> Template for RankList<'a>

Source§

const SIZE_HINT: usize = 360usize

Source§

impl<'a> Template for ReferenceSelect<'a>

Source§

const SIZE_HINT: usize = 109usize

Source§

impl<'a> Template for RepeatableArray<'a>

Source§

const SIZE_HINT: usize = 224usize

Source§

impl<'a> Template for RepeatableItem<'a>

Source§

const SIZE_HINT: usize = 189usize

Source§

impl<'a> Template for RichTextHost<'a>

Source§

const SIZE_HINT: usize = 276usize

Source§

impl<'a> Template for RowSelect<'a>

Source§

const SIZE_HINT: usize = 125usize

Source§

impl<'a> Template for SecretValue<'a>

Source§

const SIZE_HINT: usize = 311usize

Source§

impl<'a> Template for SegmentedControl<'a>

Source§

const SIZE_HINT: usize = 135usize

Source§

impl<'a> Template for Select<'a>

Source§

const SIZE_HINT: usize = 148usize

Source§

impl<'a> Template for SettingsSection<'a>

Source§

const SIZE_HINT: usize = 223usize

Source§

impl<'a> Template for Sidenav<'a>

Source§

const SIZE_HINT: usize = 631usize

Source§

impl<'a> Template for SnippetTabs<'a>

Source§

const SIZE_HINT: usize = 715usize

Source§

impl<'a> Template for Split<'a>

Source§

const SIZE_HINT: usize = 26usize

Source§

impl<'a> Template for SplitButton<'a>

Source§

const SIZE_HINT: usize = 117usize

Source§

impl<'a> Template for SplitShell<'a>

Source§

const SIZE_HINT: usize = 258usize

Source§

impl<'a> Template for StatRow<'a>

Source§

const SIZE_HINT: usize = 338usize

Source§

impl<'a> Template for Statusbar<'a>

Source§

const SIZE_HINT: usize = 140usize

Source§

impl<'a> Template for Stepper<'a>

Source§

const SIZE_HINT: usize = 157usize

Source§

impl<'a> Template for StrengthMeter<'a>

Source§

const SIZE_HINT: usize = 286usize

Source§

impl<'a> Template for Switch<'a>

Source§

const SIZE_HINT: usize = 96usize

Source§

impl<'a> Template for Table<'a>

Source§

const SIZE_HINT: usize = 246usize

Source§

impl<'a> Template for TableFooter<'a>

Source§

const SIZE_HINT: usize = 103usize

Source§

impl<'a> Template for TableWrap<'a>

Source§

const SIZE_HINT: usize = 107usize

Source§

impl<'a> Template for Tabs<'a>

Source§

const SIZE_HINT: usize = 133usize

Source§

impl<'a> Template for Tag<'a>

Source§

const SIZE_HINT: usize = 53usize

Source§

impl<'a> Template for Testimonial<'a>

Source§

const SIZE_HINT: usize = 224usize

Source§

impl<'a> Template for Textarea<'a>

Source§

const SIZE_HINT: usize = 100usize

Source§

impl<'a> Template for Timeline<'a>

Source§

const SIZE_HINT: usize = 269usize

Source§

impl<'a> Template for Toast<'a>

Source§

const SIZE_HINT: usize = 74usize

Source§

impl<'a> Template for ToastHost<'a>

Source§

const SIZE_HINT: usize = 42usize

Source§

impl<'a> Template for Tooltip<'a>

Source§

const SIZE_HINT: usize = 50usize

Source§

impl<'a> Template for Topbar<'a>

Source§

const SIZE_HINT: usize = 78usize

Source§

impl<'a> Template for TreeView<'a>

Source§

const SIZE_HINT: usize = 103usize

Source§

impl<'a> Template for UserButton<'a>

Source§

const SIZE_HINT: usize = 227usize

Source§

impl<'a> Template for Wordmark<'a>

Source§

const SIZE_HINT: usize = 74usize

Source§

impl<'a> Template for AppShell<'a>

Source§

const SIZE_HINT: usize = 805usize

Source§

impl<'a> Template for HtmxPartial<'a>

Source§

const SIZE_HINT: usize = 110usize

Source§

impl<'a> Template for SidebarProfile<'a>

Source§

const SIZE_HINT: usize = 572usize