3个不稳定版本
0.2.0 | 2021年5月14日 |
---|---|
0.1.1 | 2021年5月8日 |
0.1.0 | 2021年5月8日 |
#928 in HTTP服务器
160KB
2K SLoC
runtime_injector_actix
此库提供类型帮助将服务注入到actix-web应用程序。
入门
创建您的注入器,然后将它添加到应用程序的app数据中
#[actix::main]
async fn main() -> std::io::Result<()> {
// Define a module so the container knows what to inject
let module = define_module! {
#[cfg(not(test))]
services = [
UserAuthenticator::new.transient(),
],
#[cfg(not(debug_assertions))]
interfaces = {
dyn UserDatabase = [SqlUserDatabase::new.singleton()],
},
#[cfg(debug_assertions)]
interfaces = {
dyn UserDatabase = [JsonUserDatabase::new.singleton()],
},
};
// Configure and build the container
let mut builder = Injector::builder();
builder.add_module(module);
let injector = builder.build();
// Now add it as app data to the application
HttpServer::new(|| App::new().app_data(injector.clone()).service(index))
.bind(("127.0.0.1", 8080))?
.run()
.await
}
在您的请求处理器中使用 Injected<R>
注入依赖
#[get("/")]
async fn index(
user_db: Injected<Svc<dyn UserDatabase>>,
user_auth: Injected<Box<UserAuthenticator>>,
) -> impl Responder {
todo!()
}
最低支持的Rust版本
由于库仍在开发中,唯一支持的Rust版本是最新稳定版本的Rust。该库可能在较旧版本上运行,但没有保证。
许可证
此库的许可证为MIT或Apache 2.0,您可选择其一。
依赖项
~27MB
~562K SLoC