1 个不稳定版本

0.1.0 2021年6月17日

#722 in 配置

MIT/Apache

67KB
1K SLoC

rscontainer

rscontainer 是一个用于 Rust 编程语言的库,用于管理对象之间的依赖关系。主要类型是 ServiceContainer,它有两个用途:它充当共享实例(单例)和自定义构造函数的注册表,并提供依赖注入的机制。

更多信息请参阅文档。

解析实例

存在不同类型的实例

  • 拥有实例:用于拥有范围的全新实例。此实例将不会存储在服务容器中,每次解析拥有实例时,您都会得到一个新的实例。
  • 共享实例:存储在服务容器中的智能指针背后的实例。每次解析共享服务时,您都会得到相同的实例。
  • 某些实例:拥有实例和共享实例的枚举。当您想在类型中使用时,让用户决定他们想要提供哪种类型的实例,请使用此枚举。

如何使用

解析拥有实例

use rscontainer::ServiceContainer;

let mut container = ServiceContainer::new();
let mut foo = container.resolver().owned::<SomeService>(())?;
foo.do_something();

解析共享实例(单例)

use rscontainer::{ServiceContainer, Shared};

let mut container = ServiceContainer::new();
let foo: Shared<SomeService> = container.resolver().shared()?;

foo.access_mut(|foo| {
    let foo = foo.assert_healthy();
    foo.do_something();
});

依赖关系

~18KB