16个版本

0.3.4 2024年6月15日
0.3.3 2024年6月15日
0.2.8 2024年6月15日
0.1.2 2024年6月11日

#409过程宏

Download history 491/week @ 2024-06-08 402/week @ 2024-06-15 12/week @ 2024-06-22 2/week @ 2024-06-29 9/week @ 2024-07-06 56/week @ 2024-07-27

每月 65 次下载

MIT 许可证

18KB
380 代码行

Rust宏依赖注入

导入库

rs-macro-di = "0.2.0"

或使用cargo添加

cargo add rs-macro-di

添加依赖

// Add singleton service
add_singleton!(Arc::new(SingletonService::new()));

// Add scoped service
add_scoped!(ScopedService);

// Add transient service
add_transient!(ScopedService);

使用配置的服务

let service: Arc<ServiceClass> = provide!(ServiceClass);

或无宏

// Get provider
let mut provider = provider!();
// or
let mut provider = get_mut_service_provider();


// Add singleton service
provider.add_singleton(Arc::new(SingletonService::new()));

// Add scoped service
provider.add_scoped::<ScopedService>();

// Add transient service
provider.add_transient::<ScopedService>();
// Get provider
let provider = provider!();

let service: Arc<ServiceClass> = provider.provide::<ServiceClass>();

使用作用域块

// Add scoped service
add_scoped!(ScopedService);

// scoped service instances are cleared at the end of with_scope
with_scope(|| {
    let service: Arc<ScopedService> = provide!(ScopedService);
})

依赖

~3MB
~59K SLoC