Skip to main content

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}