#customizable #response #request #request-response #response-status #path #web-framework

racoon

Racoon is fast, fully customizable lightweight web framework for rust developers

1 unstable release

new 0.1.0 Apr 26, 2024

#758 in Web programming

MIT license

83KB
2K SLoC

Racoon

Racoon is fast, fully customizable lightweight web framework for rust developers. Learn Racoon

Installation

[dependencies]
racoon = "0.1.0"

Example

use racoon::core::path::Path;
use racoon::core::request::Request;
use racoon::core::response::{HttpResponse, Response};
use racoon::core::response::status::ResponseStatus;
use racoon::core::server::Server;

use racoon::view;

async fn home(request: Request) -> Response {
    HttpResponse::ok().body("Home")
}

#[tokio::main]
async fn main() {
    let paths = vec![
        Path::new("/", view!(home))
    ];

    let result = Server::bind("127.0.0.1:8080")
        .urls(paths)
        .run().await;

    println!("Failed to run server: {:?}", result);
}

Benchmark

wrk -c8 -d4s -t4 http://127.0.0.1:8080

Result on AMD Ryzen 5 7520U with Radeon Graphics.

Running 4s test @ http://127.0.0.1:8080
  4 threads and 8 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    50.62us   60.12us   2.52ms   97.98%
    Req/Sec    40.59k     4.10k   44.20k    92.68%
  662179 requests in 4.10s, 46.73MB read
Requests/sec: 161510.26
Transfer/sec:     11.40MB

This benchmark does not make sense in real world.

Dependencies

~7–18MB
~237K SLoC