Crates.io | smol-axum |
lib.rs | smol-axum |
version | 0.1.0 |
source | src |
created_at | 2023-12-29 21:14:53.334055 |
updated_at | 2023-12-29 21:14:53.334055 |
description | Integrations between `smol` and `axum` |
homepage | https://codeberg.org/notgull/smol-axum |
repository | https://codeberg.org/notgull/smol-axum |
max_upload_size | |
id | 1083644 |
size | 47,563 |
Integrations between smol
and axum
.
By default, axum
only supports the tokio
runtime. This crate adds a serve
function that can be used with smol
's networking types.
use async_io::Async;
use axum::{response::Html, routing::get, Router};
use macro_rules_attribute::apply;
use std::io;
use std::net::TcpListener;
use std::sync::Arc;
#[apply(smol_macros::main!)]
async fn main(ex: &Arc<smol_macros::Executor<'_>>) -> io::Result<()> {
// Build our application with a route.
let app = Router::new().route("/", get(handler));
// Create a `smol`-based TCP listener.
let listener = Async::<TcpListener>::bind(([127, 0, 0, 1], 3000)).unwrap();
println!("listening on {}", listener.get_ref().local_addr().unwrap());
// Run it using `smol_axum`
smol_axum::serve(ex.clone(), listener, app).await
}
async fn handler() -> Html<&'static str> {
Html("<h1>Hello, World!</h1>")
}
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.