tx_di_core/scope.rs
1//! 组件作用域
2//!
3//! - `Singleton`:全局单例,工厂调用一次,缓存 `Arc<T>`
4//! - `Prototype`:每次注入调用工厂,构造新实例
5
6/// 组件的作用域
7///
8/// `Singleton` 单例作用域,默认
9/// `Prototype` 原型作用域
10#[derive(Clone, Copy, Debug, PartialEq, Eq)]
11pub enum Scope {
12 /// 全局单例:首次注入时构建并缓存,后续返回同一个 `Arc<T>`
13 Singleton,
14 /// 原型:每次注入都调用工厂创建新实例
15 Prototype,
16}
17
18impl Scope {
19 /// 是否为单例
20 pub fn is_singleton(&self) -> bool {
21 matches!(self, Scope::Singleton)
22 }
23
24 /// 是否为原型
25 pub fn is_prototype(&self) -> bool {
26 matches!(self, Scope::Prototype)
27 }
28}
29
30impl Default for Scope {
31 fn default() -> Self {
32 Scope::Singleton
33 }
34}