Crates.io | rstml-component |
lib.rs | rstml-component |
version | 0.2.5 |
source | src |
created_at | 2023-08-06 01:28:09.978915 |
updated_at | 2024-09-13 14:23:13.563646 |
description | HTML Component Library for Rust |
homepage | |
repository | https://github.com/YoloDev/rstml-component |
max_upload_size | |
id | 936875 |
size | 65,862 |
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.
Declarative Component Definition: Define HTML components using Rust structs, making your code more organized and maintainable.
Effortless HTML Generation: Generate HTML content dynamically by leveraging the power of Rust's expressive syntax.
Designed for Server-Side Applications: Perfectly suited for server applications that need to generate HTML content on-the-fly.
Template Reusability: Create reusable templates by structuring components, enhancing code reusability across your project.
To use rstml-component
in your Rust project, simply add it as a dependency in your Cargo.toml
:
[dependencies]
rstml-component = "0.2.1"
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.
This project is licensed under the MIT License.