9 releases

0.2.4 May 16, 2024
0.2.3 Mar 14, 2024
0.2.2 Jan 18, 2024
0.2.1 Aug 18, 2023
0.1.3 Aug 17, 2023

#86 in Template engine

Used in rstml-component-axum

MIT license

628 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.


  • 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:

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};

struct Page<T>
		T: Into<String>,
	title: T,
	heading: String,

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

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

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


This project is licensed under the MIT License.


~58K SLoC