Skip to main content

simple_factory

Attribute Macro simple_factory 

Source
#[simple_factory]
Expand description

为 trait 生成简单工厂实现的属性宏。

此宏应用于 trait 定义,会自动生成一个对应的工厂结构体。 生成的工厂结构体名为 {TraitName}Factory,并提供一个 create 方法, 该方法使用全局静态工厂来创建 trait 对象的实例。

注意:此宏生成的代码依赖于 rust_patterns crate,请确保在项目中添加该依赖。

§使用方法

use pattern_macros::simple_factory;

#[simple_factory]
pub trait MyTrait {
    fn do_something(&self);
}

也可以指定额外的 trait bound:

use pattern_macros::simple_factory;

#[simple_factory(Send + Sync)]
pub trait MyTrait {
    fn do_something(&self);
}

§生成的内容

宏会生成以下内容:

  1. 原始的 trait 定义
  2. 工厂结构体 {TraitName}Factory
  3. 工厂的 create 方法实现

create 方法签名:

pub fn create(
    id: impl AsRef<str>,
    strategy: rust_patterns::FactoryFallback,
) -> Result<Box<dyn MyTrait>, rust_patterns::FactoryError>