Skip to main content

Crate winged_rust

Crate winged_rust 

Source
Expand description

Fast, type-safe HTML generation for Rust and WebAssembly.

A port of Winged-Swift 2.0.0: the same composite tree, the same escape-by-default guarantee, the same compact and pretty render modes — compiled to native code or to wasm32-unknown-unknown.

§Getting started

use winged_rust::prelude::*;

let card = article()
    .add_class("card p-4")
    .child(h1().text("Welcome to WingedRust!").add_class("text-2xl"))
    .child(p().text("Ultra-fast HTML generation compiled to WebAssembly."));

println!("{}", card.render_pretty());

§Escaping

Text content and attribute values are escaped when they enter the tree, not when it is rendered, so nothing is escaped twice and nothing is missed. Node::Raw is the documented way to inject markup you already trust.

use winged_rust::prelude::*;
assert_eq!(p().text("<script>").render(), "<p>&lt;script&gt;</p>");

§Render modes

Render::render produces a single line; Render::render_pretty indents. Both take their configuration from a RenderOptions value rather than global state, so two threads can render the same tree differently at the same time.

§Limits

Rendering has no depth limit: the writer walks an explicit stack instead of recursing. What deep trees do cost is output size in pretty mode, which is quadratic in depth because every line carries one indent string per level. See Render and SECURITY.md.

§Parity

The crate is verified against Winged-Swift’s own golden fixtures — the same bytes, from the same page, built through both APIs. Behavioural differences that were introduced on purpose are listed in PORTING.md.

Re-exports§

pub use crate::core::Attribute;
pub use crate::core::Element;
pub use crate::core::Node;
pub use crate::core::Render;
pub use crate::core::RenderOptions;
pub use crate::document::Document;
pub use crate::layout::Layout;

Modules§

accessibility
Accessibility helpers and a debug-time audit.
core
The core engine: the node tree, the renderer and escaping.
document
Whole-page assembly.
elements
Constructors for every HTML element Winged-Swift supports.
feed
RSS 2.0 feed generation.
layout
Reusable page layouts.
macros
The html! declarative macro.
prelude
One import that gets you from nothing to a rendered page.
seo
SEO metadata: Open Graph, Twitter Cards and the common <meta> block.
sitemap
XML sitemap generation.
ssgssg
Static site generation.
wasmwasm
WebAssembly bindings.

Macros§

html
Builds a node tree from nested markup-like syntax.