#web-framework #framework #web #generation #code #tidos

macro tidos_macro

Procedural macros for the Tidos component framework

4 releases

new 0.6.8 Mar 16, 2025
0.6.7 Mar 15, 2025
0.6.6 Mar 8, 2025
0.6.5 Mar 8, 2025

#2680 in Procedural macros

Download history 220/week @ 2025-03-05

220 downloads per month
Used in tidos

MIT and LGPL-3.0-or-later

38KB
998 lines

Tidos

Download API Docs

Tidos is a high-performance Rust-based component framework that seamlessly integrates with any web framework, enabling developers to build dynamic web applications with ease. With Tidos’ powerful macros, you can intuitively create components directly within your Rust code. It even allows you to leverage Rust's pattern matching, loops, and conditionals inside your components—making your UI logic more expressive and maintainable.

use tidos_macro::view;
let names = vec!["Bob", "Alice"];

view! {
    {#for name in names}
        <p>{format!("Hello {}!", name)}</p>
    {/for}
}

Examples

A simple example

use tidos::{Component, Page};

pub struct Greet {
    pub name: String,
}

impl Component for Greet {
    fn to_render(&self, page: &mut Page) -> String {
        view! {
            <h1>Hello {&self.name}</h1>
        }
    }
}


// Example route from Rocket, but you can use any framework you want.
#[get("/")]
pub fn index() -> Page {
	page! {
        <main>
            <Greet name={ String::from("kaasbroodju") } />
        </main>
    }
}

More examples

For more examples visit our documentation.

Getting help

If you're stuck or need help, reach out to the community via our Github discussions.

Contributing

Contributions are absolutely, positively welcomed and encouraged! If you're interested in contributing code or documentation, please first read the code of conduct.

Additionally, you could:

  1. Submit a feature request or bug report as an issue.
  2. Ask for improved documentation as an issue.
  3. Answers questions in GitHub discussions questions.
  4. Share a project in GitHub discussions show & tell.

Dependencies

~20–49MB
~808K SLoC