10 releases
0.2.5 | Sep 13, 2024 |
---|---|
0.2.4 | May 16, 2024 |
0.2.3 | Mar 14, 2024 |
0.2.2 | Jan 18, 2024 |
0.1.3 | Aug 17, 2023 |
#88 in Template engine
Used in rstml-component-axum
38KB
630 lines
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
-
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.
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.
Dependencies
~1.7–7.5MB
~56K SLoC