[][src]Trait lol_html::html_content::UserData

pub trait UserData {
    fn user_data(&self) -> &dyn Any;
fn user_data_mut(&mut self) -> &mut dyn Any;
fn set_user_data(&mut self, data: impl Any); }

Data that can be attached to a rewritable unit by a user and shared between content handler invocations.

Same rewritable units can be passed to different content handlers if all of them capture the unit. UserData trait provides capability to attach arbitrary data to a rewritable unit, so handlers can make decision on how to process the unit based on the information provided by previous handlers.

Example

use lol_html::{rewrite_str, element, RewriteStrSettings};
use lol_html::html_content::UserData;

rewrite_str(
    r#"<div id="foo"></div>"#,
    RewriteStrSettings {
        element_content_handlers: vec![
            element!("*", |el| {
                el.set_user_data("Captured by `*`");

                Ok(())
            }),
            element!("#foo", |el| {
                let user_data = el.user_data_mut().downcast_mut::<&'static str>().unwrap();

                assert_eq!(*user_data, "Captured by `*`");

                *user_data = "Captured by `#foo`";

                Ok(())
            }),
            element!("div", |el| {
                let user_data = el.user_data().downcast_ref::<&'static str>().unwrap();

                assert_eq!(*user_data, "Captured by `#foo`");

                Ok(())
            })
        ],
        ..RewriteStrSettings::default()
    }
).unwrap();

Required methods

fn user_data(&self) -> &dyn Any

Returns a reference to the attached user data.

fn user_data_mut(&mut self) -> &mut dyn Any

Returns a mutable reference to the attached user data.

fn set_user_data(&mut self, data: impl Any)

Attaches user data to a rewritable unit.

Loading content...

Implementors

impl<'_> UserData for Comment<'_>[src]

impl<'_> UserData for Doctype<'_>[src]

impl<'_> UserData for TextChunk<'_>[src]

impl<'_, '_> UserData for Element<'_, '_>[src]

Loading content...