Template

Struct Template 

Source
pub struct Template<'a>(/* private fields */);
Expand description

A lazily evaluated text template with named holes for interpolating properties into.

The Template::render method can be used to format a template with Props into a string or other representation.

Template equality is based on the equality of their renderings.

Two templates can be equal if they’d render to the same outputs. That means they must have the same holes in the same positions, but their text tokens may be split differently, so long as they produce the same text.

Implementations§

Source§

impl Template<'static>

Source

pub const fn new(parts: &'static [Part<'static>]) -> Template<'static>

Create a template from a set of tokens.

Source

pub const fn literal(text: &'static str) -> Template<'static>

Create a template from a string literal with no holes.

Source§

impl<'a> Template<'a>

Source

pub const fn new_ref(parts: &'a [Part<'a>]) -> Template<'a>

Create a template from a borrowed set of tokens.

The Template::new method should be preferred where possible.

Source

pub const fn literal_ref(text: &'a str) -> Template<'a>

Create a template from a string literal with no holes.

The Template::literal method should be preferred where possible.

Source

pub fn by_ref<'b>(&'b self) -> Template<'b>

Get a new template, borrowing data from this one.

Source

pub fn as_literal(&self) -> Option<&Str<'a>>

Try get the value of the template as a string literal.

If the template only has a single token, and that token is text, then this method will return Some. Otherwise this method will return None.

Source

pub fn parts(&self) -> Parts<'_, 'a>

Iterate over the parts of the template.

Source

pub fn render<'b, P>(&'b self, props: P) -> Render<'b, P>

Lazily render the template, using the given properties for interpolation.

Source§

impl Template<'static>

Source

pub fn new_owned(parts: impl Into<Box<[Part<'static>]>>) -> Template<'static>

Create a template from a set of owned parts.

Source§

impl<'a> Template<'a>

Source

pub fn to_owned(&self) -> Template<'static>

Get a new template from this one, converting its parts into owned data.

If the template already contains owned data then this method will simply clone it.

Trait Implementations§

Source§

impl<'a> Clone for Template<'a>

Source§

fn clone(&self) -> Template<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Template<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> Display for Template<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> From<&'a [Part<'a>]> for Template<'a>

Source§

fn from(value: &'a [Part<'a>]) -> Template<'a>

Converts to this type from the input type.
Source§

impl<'a, 'b> PartialEq<Template<'b>> for Template<'a>

Source§

fn eq(&self, other: &Template<'b>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'k> Serialize for Template<'k>

Available on crate feature serde only.
Source§

fn serialize<S>( &self, serializer: S, ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<'a> ToValue for Template<'a>

Source§

fn to_value(&self) -> Value<'_>

Perform the conversion.
Source§

impl<'k> Value for Template<'k>

Available on crate feature sval only.
Source§

fn stream<'sval, S>(&'sval self, stream: &mut S) -> Result<(), Error>
where S: Stream<'sval> + ?Sized,

Stream this value through a Stream.
Source§

fn tag(&self) -> Option<Tag>

Get the tag of this value, if there is one.
Source§

fn to_bool(&self) -> Option<bool>

Try convert this value into a boolean.
Source§

fn to_f32(&self) -> Option<f32>

Try convert this value into a 32bit binary floating point number.
Source§

fn to_f64(&self) -> Option<f64>

Try convert this value into a 64bit binary floating point number.
Source§

fn to_i8(&self) -> Option<i8>

Try convert this value into a signed 8bit integer.
Source§

fn to_i16(&self) -> Option<i16>

Try convert this value into a signed 16bit integer.
Source§

fn to_i32(&self) -> Option<i32>

Try convert this value into a signed 32bit integer.
Source§

fn to_i64(&self) -> Option<i64>

Try convert this value into a signed 64bit integer.
Source§

fn to_i128(&self) -> Option<i128>

Try convert this value into a signed 128bit integer.
Source§

fn to_u8(&self) -> Option<u8>

Try convert this value into an unsigned 8bit integer.
Source§

fn to_u16(&self) -> Option<u16>

Try convert this value into an unsigned 16bit integer.
Source§

fn to_u32(&self) -> Option<u32>

Try convert this value into an unsigned 32bit integer.
Source§

fn to_u64(&self) -> Option<u64>

Try convert this value into an unsigned 64bit integer.
Source§

fn to_u128(&self) -> Option<u128>

Try convert this value into an unsigned 128bit integer.
Source§

fn to_text(&self) -> Option<&str>

Try convert this value into a text string.
Source§

fn to_binary(&self) -> Option<&[u8]>

Try convert this value into a bitstring.
Source§

impl<'k> ValueRef<'k> for Template<'k>

Available on crate feature sval only.
Source§

fn stream_ref<S>(&self, stream: &mut S) -> Result<(), Error>
where S: Stream<'k> + ?Sized,

Stream this value through a Stream.
Source§

impl<'a> Eq for Template<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Template<'a>

§

impl<'a> RefUnwindSafe for Template<'a>

§

impl<'a> Send for Template<'a>

§

impl<'a> Sync for Template<'a>

§

impl<'a> Unpin for Template<'a>

§

impl<'a> UnwindSafe for Template<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> Value for T
where T: Value,