2 个不稳定版本

0.2.0 2023 年 12 月 24 日
0.1.0 2023 年 12 月 20 日

#2294 in 网页编程

MIT 许可证

35KB
763

More DI for Axum   CI Crates.io MIT licensed

More DI 是一个 Rust 的依赖注入 (DI) 库。此库为 axum 网页框架提供额外的 DI 扩展。

你可能正在寻找

Axum 中的依赖注入

考虑以下结构。

use di::*;

#[injectable]
struct Person;

impl Person {
    fn speak(&self) -> &str {
        "Hello world!"
    }
}

现在可以将这些信息组合成一个网页应用

use crate::*;
use di::*;
use di_axum::*;

async fn say_hello(Inject(person): Inject<Person>) -> String {
    person.speak().to_owned()
}

#[tokio::main]
async fn main() {
    let provider = ServiceCollection::new()
        .add(Person::scoped())
        .build_provider()
        .unwrap();

    let app = Router::new()
        .route("/hello", get(say_hello))
        .with_provider(provider);

    let listener = TcpListener::bind("127.0.0.1:5000").await.unwrap();

    println!("Now listening on: {}", listener.local_addr().unwrap());

    axum::serve(listener, app).await.unwrap();
}

许可证

本项目采用 MIT 许可证

依赖项

~4MB
~82K SLoC