1 个不稳定版本
0.1.0 | 2023 年 12 月 29 日 |
---|
#1917 in 异步
15KB
158 行
smol-axum
smol 和 axum 之间的集成。
默认情况下,axum
仅支持 tokio
运行时。此 crate 添加了一个 serve
函数,可以与 smol
的网络类型一起使用。
示例
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>")
}
许可证
根据您的选择,许可协议为以下之一:
- Apache 许可证 2.0(《LICENSE-APACHE》或 http://www.apache.org/licenses/LICENSE-2.0》)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT》)
。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交的任何贡献,都应按上述方式双重许可,而无需任何附加条款或条件。
依赖项
~8–20MB
~262K SLoC