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 &, < to <, and > to >.
For Renderable<AttributeValue> implementations, this must render an
attribute value which will eventually be surrounded by double quotes. The
implementation must escape & to &, < to <, > to >, and
" to ".
§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§
Provided Methods§
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
impl Renderable for char
Source§impl Renderable for str
impl Renderable for str
Source§impl Renderable for String
impl Renderable for String
Source§impl Renderable<AttributeValue> for char
impl Renderable<AttributeValue> for char
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl Renderable<AttributeValue> for str
impl Renderable<AttributeValue> for str
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl Renderable<AttributeValue> for String
impl Renderable<AttributeValue> for String
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl Renderable<AttributeValue> for Arguments<'_>
impl Renderable<AttributeValue> for Arguments<'_>
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl<'a, B: 'a + Renderable + ToOwned + ?Sized> Renderable for Cow<'a, B>
impl<'a, B: 'a + Renderable + ToOwned + ?Sized> Renderable for Cow<'a, B>
Source§impl<'a, B: 'a + Renderable<AttributeValue> + ToOwned + ?Sized> Renderable<AttributeValue> for Cow<'a, B>
impl<'a, B: 'a + Renderable<AttributeValue> + ToOwned + ?Sized> Renderable<AttributeValue> for Cow<'a, B>
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl<C: Context> Renderable<C> for bool
impl<C: Context> Renderable<C> for bool
Source§impl<C: Context> Renderable<C> for f32
impl<C: Context> Renderable<C> for f32
Source§impl<C: Context> Renderable<C> for f64
impl<C: Context> Renderable<C> for f64
Source§impl<C: Context> Renderable<C> for i8
impl<C: Context> Renderable<C> for i8
Source§impl<C: Context> Renderable<C> for i16
impl<C: Context> Renderable<C> for i16
Source§impl<C: Context> Renderable<C> for i32
impl<C: Context> Renderable<C> for i32
Source§impl<C: Context> Renderable<C> for i64
impl<C: Context> Renderable<C> for i64
Source§impl<C: Context> Renderable<C> for i128
impl<C: Context> Renderable<C> for i128
Source§impl<C: Context> Renderable<C> for isize
impl<C: Context> Renderable<C> for isize
Source§impl<C: Context> Renderable<C> for u8
impl<C: Context> Renderable<C> for u8
Source§impl<C: Context> Renderable<C> for u16
impl<C: Context> Renderable<C> for u16
Source§impl<C: Context> Renderable<C> for u32
impl<C: Context> Renderable<C> for u32
Source§impl<C: Context> Renderable<C> for u64
impl<C: Context> Renderable<C> for u64
Source§impl<C: Context> Renderable<C> for u128
impl<C: Context> Renderable<C> for u128
Source§impl<C: Context> Renderable<C> for usize
impl<C: Context> Renderable<C> for usize
Source§impl<T: Renderable + ?Sized> Renderable for &T
impl<T: Renderable + ?Sized> Renderable for &T
Source§impl<T: Renderable + ?Sized> Renderable for &mut T
impl<T: Renderable + ?Sized> Renderable for &mut T
Source§impl<T: Renderable + ?Sized> Renderable for Box<T>
impl<T: Renderable + ?Sized> Renderable for Box<T>
Source§impl<T: Renderable + ?Sized> Renderable for Rc<T>
impl<T: Renderable + ?Sized> Renderable for Rc<T>
Source§impl<T: Renderable + ?Sized> Renderable for Arc<T>
impl<T: Renderable + ?Sized> Renderable for Arc<T>
Source§impl<T: Renderable> Renderable for [T]
impl<T: Renderable> Renderable for [T]
Source§impl<T: Renderable> Renderable for Vec<T>
impl<T: Renderable> Renderable for Vec<T>
Source§impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for &T
impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for &T
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for &mut T
impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for &mut T
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Box<T>
impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Box<T>
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Rc<T>
impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Rc<T>
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Arc<T>
impl<T: Renderable<AttributeValue> + ?Sized> Renderable<AttributeValue> for Arc<T>
fn render_to(&self, buffer: &mut AttributeBuffer)
Source§impl<T: Renderable<C>, C: Context> Renderable<C> for Option<T>
impl<T: Renderable<C>, C: Context> Renderable<C> for Option<T>
Source§impl<T: Renderable<C>, C: Context> Renderable<C> for (T₁, T₂, …, Tₙ)
This trait is implemented for tuples up to twelve items long.
impl<T: Renderable<C>, C: Context> Renderable<C> for (T₁, T₂, …, Tₙ)
This trait is implemented for tuples up to twelve items long.