Rust.cc

Rust.cc -

Rudi 0.7.0 - 一个开箱即用的依赖注入框架

Rudi Rudi,一个开箱即用的 Rust 依赖注入框架。 在之前的 Rudi 版本中,有 2 种作用域,Singelton 和 Transient,Singleton 需要类型实现 Clone,能从 Context 取到引用和有所有权的实例,Transient 不需要实现 Clone,每次从 Context 取到的都是新创建的实例。 但是这 2 种作用域仍然不能覆盖所有场景,比如有些类型只创建一次,只需要引用就可以调用方法,但是没有实现 Clone,不管是开发者忘了还是故意不实现,都会导致无法使用 Singleton 作用域。这种情况下当然可以用 Rc 或 Arc 包一层,但是我觉得这种情况下,应该有更好的解决方案。 于是在最新的 0.7.0 版本中,我新添加了 SingleOwner 作用域,这种作用域下,类型不需要实现 Clone,但是只能从 Context 取到引用,不能取到所有权。 示例 use rudi::{Context, SingleOwner, Singleton}; struct NotCloneable(i32); // 注册一个 SingleOwner 作用域的类型 #[SingleOwner] fn One() -> NotCloneable { NotCloneable(1) } #[Singleton] fn Run(#[di(ref)] one: &NotCloneable) { let one = one.0; assert_eq!(one, 1); println!("one: {}", one); } fn main() { let mut cx = Context::auto_register(); cx.resolve() } 更多信息可以在仓库上看到,尤其是 Releases 里的版本更新说明。 Rudi 欢迎各位使用,有问题欢迎提 issue,如果觉得好用,可以点个 star。

Rudi是一个Rust依赖注入框架,最新版本0.7.0中新增了SingleOwner作用域,不需要实现Clone,只能从Context取到引用。可以在仓库上查看更多信息。

相关推荐 去reddit讨论

热榜 Top10

Dify.AI
Dify.AI
观测云
观测云
eolink
eolink
LigaAI
LigaAI

推荐或自荐