YoloDev / rstml-component

MIT License
4 stars 2 forks source link

rstml-component: HTML Component Library for Rust

rstml-component is a Rust library that empowers developers to create dynamic HTML components efficiently. With this library, you can define HTML components using Rust structs and easily generate HTML on-the-fly, making it especially useful for server-side applications that need to produce HTML content.

Features

Installation

To use rstml-component in your Rust project, simply add it as a dependency in your Cargo.toml:

[dependencies]
rstml-component = "0.2.1"

Usage

Here's a quick example to demonstrate how easy it is to define and use HTML components using rstml-component:

use rstml_component::{HtmlComponent, HtmlContent, HtmlFormatter};

#[derive(HtmlComponent)]
struct Page<T>
where
        T: Into<String>,
{
    title: T,
    heading: String,
}

impl<T> HtmlContent for Page<T>
where
        T: Into<String>,
{
    fn fmt(self, formatter: &mut HtmlFormatter) -> std::fmt::Result {
        write_html!(formatter,
            <Template title=self.title attribute="world">
                <h1>{self.heading}</h1>
                <p>"This is a test"</p>
            </Template>
        )
    }
}

// Example Axum handler - requires rstml-component-axum
async fn index() -> impl IntoResponse {
    Page {
        title: "My Title",
        heading: "Page Heading",
    }
    .into_html()
}

For more detailed information and examples, please refer to our Documentation.

License

This project is licensed under the MIT License.