Skip to content

YoloDev/rstml-component

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages