Crates.io | ruxt_macros |
lib.rs | ruxt_macros |
version | 0.1.4 |
source | src |
created_at | 2024-05-03 04:26:34.805157 |
updated_at | 2024-05-05 03:15:58.771197 |
description | The proc-macro crate for Ruxt, a file-based routing web framework. |
homepage | https://ruxt.rs |
repository | https://github.com/duncanlutz/ruxt-macros |
max_upload_size | |
id | 1228359 |
size | 16,141 |
This is a collection of macros for the Ruxt web framework.
Run the following command to add Ruxt to your project:
cargo add ruxt
Add the following to your Cargo.toml
:
[dependencies]
ruxt-macros = "0.1.4"
#[ruxt_macros::main]
async fn main() -> std::io::Result<()> {
let test_data = "Hello, World!";
HttpServer::new(move || App::new().app_data(test_data.to_string()))
.bind(("0.0.0.0", 8080))?
.run()
.await
}
The Ruxt main
macro will automatically generate routes for files in the routes
directory.
The routes are generated based on the file name, so a file named index.rs
will be available at the root of the server.
The macro determines which HTTP verb to use based on the function name. For example, a function named get
will be a GET
route.
So for example:
// routes/index.rs
use actix_web::{web, HttpResponse, Responder};
pub async fn get() -> impl Responder {
HttpResponse::Ok().body("Hello, World!")
}
Will be available as a GET request at http://localhost:8080/
.
The following verbs are available for routing:
get
post
put
patch
delete
Dynamic routes can be created by naming a folder or file with two leading underscores. For example, a folder named __user
will create a dynamic route at /user/{id}
.
// routes/__user.rs
use actix_web::{web, HttpResponse, Responder};
pub async fn post(id: web::Path<String>) -> impl Responder {
HttpResponse::Ok().body(format!("Hello, {}!", id))
}
Will be available as a POST request at http://localhost:8080/user/{id}
.
mod
or index
because of the way the macro generates routes. I'm looking into a solution for this.This project is licensed under the MIT license.