Este es un párrafo con contenido dinámico.
" /// ); /// ``` #[derive(AutoDefault)] pub enum PrepareMarkup { /// No se genera contenido HTML (equivale a `html! {}`). #[default] None, /// Texto plano que se **escapará automáticamente** para que no sea interpretado como HTML. /// /// Úsalo con textos que provengan de usuarios u otras fuentes externas para garantizar la /// seguridad contra inyección de código. Escaped(String), /// HTML literal que se inserta **sin escapado adicional**. /// /// Úsalo únicamente para contenido generado de forma confiable o controlada, ya que cualquier /// etiqueta o script incluido será renderizado directamente en el documento. Raw(String), /// Fragmento HTML ya preparado como [`Markup`], listo para insertarse directamente. /// /// Normalmente proviene de expresiones `html! { ... }`. With(Markup), } impl PrepareMarkup { /// Devuelve `true` si el contenido está vacío y no generará HTML al renderizar. pub fn is_empty(&self) -> bool { match self { PrepareMarkup::None => true, PrepareMarkup::Escaped(text) => text.is_empty(), PrepareMarkup::Raw(string) => string.is_empty(), PrepareMarkup::With(markup) => markup.is_empty(), } } } impl Render for PrepareMarkup { /// Integra el renderizado fácilmente en la macro [`html!`]. fn render(&self) -> Markup { match self { PrepareMarkup::None => html! {}, PrepareMarkup::Escaped(text) => html! { (text) }, PrepareMarkup::Raw(string) => html! { (PreEscaped(string)) }, PrepareMarkup::With(markup) => html! { (markup) }, } } }