Trait sailfish::runtime::Render

source ·
pub trait Render {
    // Required method
    fn render(&self, b: &mut Buffer) -> Result<(), RenderError>;

    // Provided method
    fn render_escaped(&self, b: &mut Buffer) -> Result<(), RenderError> { ... }
}
Expand description

types which can be rendered inside buffer block (<%= %>)

If you want to render the custom data, you must implement this trait and specify the behaviour.

Safety

This trait allows modifying the previously-rendered contents or even decreasing the buffer size. However, such an operation easily cause unexpected rendering results. In order to avoid this, implementors should ensure that the contents which is already rendered won’t be changed during render or render_escaped method is called.

Examples

use sailfish::runtime::{Buffer, Render, RenderError};

struct MyU64(u64);

impl Render for MyU64 {
    #[inline]
    fn render(&self, b: &mut Buffer) -> Result<(), RenderError> {
        self.0.render(b)
    }
}

Required Methods§

source

fn render(&self, b: &mut Buffer) -> Result<(), RenderError>

render to Buffer without escaping

Provided Methods§

source

fn render_escaped(&self, b: &mut Buffer) -> Result<(), RenderError>

render to Buffer with HTML escaping

Implementations on Foreign Types§

source§

impl Render for bool

source§

impl Render for char

source§

impl Render for f32

source§

impl Render for f64

source§

impl Render for i8

source§

impl Render for i16

source§

impl Render for i32

source§

impl Render for i64

source§

impl Render for i128

source§

impl Render for isize

source§

impl Render for str

source§

impl Render for u8

source§

impl Render for u16

source§

impl Render for u32

source§

impl Render for u64

source§

impl Render for u128

source§

impl Render for usize

source§

impl Render for String

source§

impl Render for NonZeroI8

source§

impl Render for NonZeroI16

source§

impl Render for NonZeroI32

source§

impl Render for NonZeroI64

source§

impl Render for NonZeroI128

source§

impl Render for NonZeroIsize

source§

impl Render for NonZeroU8

source§

impl Render for NonZeroU16

source§

impl Render for NonZeroU32

source§

impl Render for NonZeroU64

source§

impl Render for NonZeroU128

source§

impl Render for NonZeroUsize

source§

impl Render for Path

source§

impl Render for PathBuf

source§

impl<'a, T: Render + ToOwned + ?Sized> Render for Cow<'a, T>

source§

impl<'a, T: Render + ?Sized> Render for &'a T

source§

impl<'a, T: Render + ?Sized> Render for &'a mut T

source§

impl<'a, T: Render + ?Sized> Render for Ref<'a, T>

source§

impl<'a, T: Render + ?Sized> Render for RefMut<'a, T>

source§

impl<'a, T: Render + ?Sized> Render for MutexGuard<'a, T>

source§

impl<'a, T: Render + ?Sized> Render for RwLockReadGuard<'a, T>

source§

impl<'a, T: Render + ?Sized> Render for RwLockWriteGuard<'a, T>

source§

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

source§

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

source§

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

source§

impl<T: Render> Render for Wrapping<T>

Implementors§

source§

impl<'a, T: Debug + ?Sized> Render for Debug<'a, T>

source§

impl<'a, T: Display + ?Sized> Render for Display<'a, T>

source§

impl<'a, T: Serialize + ?Sized> Render for Json<'a, T>

Available on crate feature json only.
source§

impl<'a, T: Render + ?Sized> Render for Lower<'a, T>

source§

impl<'a, T: Render + ?Sized> Render for Trim<'a, T>

source§

impl<'a, T: Render + ?Sized> Render for Truncate<'a, T>

source§

impl<'a, T: Render + ?Sized> Render for Upper<'a, T>