Attribute

Struct Attribute 

Source
pub struct Attribute<T>(pub T);
Expand description

Wrapper used for displaying attributes in elements

This wrapper can print attributes with or without values. It can also handle attributes wrapped in an Option and will behave accordingly.

§Examples

let html = another_html_builder::Buffer::default()
    .node("div")
    .attr("name-only")
    .attr(("name", "value"))
    .attr(Some(("other", "value")))
    .attr(("with-number", 42))
    .close()
    .into_inner();
assert_eq!(
    html,
    "<div name-only name=\"value\" other=\"value\" with-number=\"42\" />"
);

§Extending

It’s possible to implement attributes with custom types, just by implementing the AttributeName and AttributeValue traits.

use std::fmt::{Display, Write};

struct ClassNames<'a>(&'a [&'static str]);

impl<'a> another_html_builder::attribute::AttributeValue for ClassNames<'a> {
    fn render(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        for (index, inner) in self.0.iter().enumerate() {
            if (index > 0) {
                f.write_char(' ')?;
            }
            // this could be avoided if you consider it is escaped by default
            another_html_builder::attribute::EscapedValue(inner).fmt(f)?;
        }
        Ok(())
    }
}

let html = another_html_builder::Buffer::default()
    .node("div")
    .attr(("class", ClassNames(&["foo", "bar"])))
    .close()
    .into_inner();
assert_eq!(html, "<div class=\"foo bar\" />");

Tuple Fields§

§0: T

Trait Implementations§

Source§

impl<N: AttributeName, V: AttributeValue> Display for Attribute<(N, V)>

Source§

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

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

impl<N: AttributeName> Display for Attribute<N>

Source§

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

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

impl<N: AttributeName, V: AttributeValue> Display for Attribute<Option<(N, V)>>

Source§

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

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

impl<N: AttributeName> Display for Attribute<Option<N>>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Attribute<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Attribute<T>
where T: RefUnwindSafe,

§

impl<T> Send for Attribute<T>
where T: Send,

§

impl<T> Sync for Attribute<T>
where T: Sync,

§

impl<T> Unpin for Attribute<T>
where T: Unpin,

§

impl<T> UnwindSafe for Attribute<T>
where T: UnwindSafe,

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> 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> 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.