Trait Renderable

Source
pub trait Renderable<C: Context = Node> {
    // Required method
    fn render_to(&self, buffer: &mut Buffer<C>);

    // Provided method
    fn render(&self) -> Rendered<String>
       where Self: Renderable { ... }
}
Available on crate feature alloc only.
Expand description

A type that can be rendered as an HTML node.

For Renderable<Node> (a.k.a. Renderable) implementations, this must render complete HTML nodes. If rendering string-like types, the implementation must escape & to &amp;, < to &lt;, and > to &gt;.

For Renderable<AttributeValue> implementations, this must render an attribute value which will eventually be surrounded by double quotes. The implementation must escape & to &amp;, < to &lt;, > to &gt;, and " to &quot;.

§Example

use hypertext::{Buffer, prelude::*};

pub struct Person {
    name: String,
    age: u8,
}

impl Renderable for Person {
    fn render_to(&self, buffer: &mut Buffer) {
        maud! {
            div {
                h1 { (self.name) }
                p { "Age: " (self.age) }
            }
        }
        .render_to(buffer);
    }
}

let person = Person {
    name: "Alice".into(),
    age: 20,
};

assert_eq!(
    maud! { main { (person) } }.render().as_inner(),
    r#"<main><div><h1>Alice</h1><p>Age: 20</p></div></main>"#,
);

Required Methods§

Source

fn render_to(&self, buffer: &mut Buffer<C>)

Renders this value to the buffer.

Provided Methods§

Source

fn render(&self) -> Rendered<String>
where Self: Renderable,

Renders this value to a string. This is a convenience method that calls render_to into a new Buffer and returns the result.

If overriden for performance reasons, this must match the implementation of render_to.

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 Renderable for char

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl Renderable for str

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl Renderable for String

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl Renderable for Arguments<'_>

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

impl Renderable<AttributeValue> for char

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl Renderable<AttributeValue> for str

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl Renderable<AttributeValue> for String

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl Renderable<AttributeValue> for Arguments<'_>

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl<'a, B: 'a + Renderable + ToOwned + ?Sized> Renderable for Cow<'a, B>

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<'a, B: 'a + Renderable<AttributeValue> + ToOwned + ?Sized> Renderable<AttributeValue> for Cow<'a, B>

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl<C: Context> Renderable<C> for bool

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for f32

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for f64

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for i8

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for i16

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for i32

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for i64

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for i128

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for isize

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for u8

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for u16

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for u32

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for u64

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for u128

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<C: Context> Renderable<C> for ()

Source§

fn render_to(&self, _: &mut Buffer<C>)

Source§

impl<C: Context> Renderable<C> for usize

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<T: Renderable + ?Sized> Renderable for &T

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<T: Renderable + ?Sized> Renderable for &mut T

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<T: Renderable + ?Sized> Renderable for Box<T>

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<T: Renderable + ?Sized> Renderable for Rc<T>

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<T: Renderable + ?Sized> Renderable for Arc<T>

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

fn render(&self) -> Rendered<String>

Source§

impl<T: Renderable> Renderable for [T]

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

impl<T: Renderable> Renderable for Vec<T>

Source§

fn render_to(&self, buffer: &mut Buffer)

Source§

impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for &T

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for &mut T

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Box<T>

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Rc<T>

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Arc<T>

Source§

fn render_to(&self, buffer: &mut AttributeBuffer)

Source§

impl<T: Renderable<C>, C: Context> Renderable<C> for Option<T>

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

impl<T: Renderable<C>, C: Context> Renderable<C> for (T₁, T₂, …, Tₙ)

This trait is implemented for tuples up to twelve items long.

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

impl<T: Renderable<C>, E: Renderable<C>, C: Context> Renderable<C> for Result<T, E>

Source§

fn render_to(&self, buffer: &mut Buffer<C>)

Source§

impl<T: Renderable, const N: usize> Renderable for [T; N]

Source§

fn render_to(&self, buffer: &mut Buffer)

Implementors§

Source§

impl<C: Context, T: Debug> Renderable<C> for Debugged<T>
where for<'a> Arguments<'a>: Renderable<C>,

Source§

impl<C: Context, T: Display> Renderable<C> for Displayed<T>
where for<'a> Arguments<'a>: Renderable<C>,

Source§

impl<F: Fn(&mut Buffer<C>), C: Context> Renderable<C> for Lazy<F, C>

Source§

impl<T: AsRef<str>, C: Context> Renderable<C> for Raw<T, C>