Crate kanagawa

source ·
Expand description

Kanagawa is a minimal and pragmatic Rust web application framework built for rapid development. It comes with a robust set of features that make building async web applications and APIs easier and more fun.

§Getting started

In order to build a web app in Rust you need an HTTP server, and an async runtime. After running cargo init add the following lines to your Cargo.toml file:

# Example, use the version numbers you need
kanagawa = "0.17.0"

§Examples

Create an HTTP server that receives a JSON body, validates it, and responds with a confirmation message.

use kanagawa::Request;
use kanagawa::prelude::*;

#[derive(Debug, Deserialize)]
struct Animal {
    name: String,
    legs: u16,
}

#[nuclei::main]
async fn main() -> kanagawa::Result<()> {
    let mut app = kanagawa::new();
    app.at("/orders/shoes").post(order_shoes);
    app.listen("127.0.0.1:8080").await?;
    Ok(())
}

async fn order_shoes(mut req: Request<()>) -> kanagawa::Result {
    let Animal { name, legs } = req.body_json().await?;
    Ok(format!("Hello, {}! I've put in an order for {} shoes", name, legs).into())
}
$ curl localhost:8080/orders/shoes -d '{ "name": "Chashu", "legs": 4 }'
Hello, Chashu! I've put in an order for 4 shoes

$ curl localhost:8080/orders/shoes -d '{ "name": "Mary Millipede", "legs": 750 }'
Hello, Mary Millipede! I've put in an order for 750 shoes

See more examples in the examples directory.

Re-exports§

Modules§

Structs§

Enums§

Traits§

  • An HTTP request handler.
  • Operation registrar for Proactive IO, represents the outer ring that will send & receive submissions and completions respectively.
  • Middleware that wraps around the remaining middleware chain.
  • Provides the status method for Result and Option.

Functions§

  • Runs the global and the local executor on the current thread
  • IO driver that drives underlying event systems
  • Init the global executor, spawning as many threads as the number or cpus or the value specified by the ASYNC_GLOBAL_EXECUTOR_THREADS environment variable if specified.
  • Init the global executor, spawning as many threads as specified or the value specified by the specified environment variable.
  • Create a new Kanagawa server.
  • Spawns a task onto the multi-threaded global executor.
  • Runs blocking code on a thread pool.
  • Spawns a task onto the local executor.
  • Spawn more executor threads, up to configured max value.
  • Stop the current executor thread, if we exceed the configured min value
  • Stop one of the executor threads, down to configured min value
  • Create a new Kanagawa server with shared application scoped state.

Type Aliases§

  • Submitted async IO operation type
  • A specialized Result type for Kanagawa.

Attribute Macros§

  • Enables an async benchmark function.
  • Enables an async main function.
  • Enables an async test function.