Skip to main content

observable

Attribute Macro observable 

Source
#[observable]
Expand description

为结构体自动实现 Observable trait 的属性宏。

此宏应用于结构体定义,会自动:

  1. 添加 registry: ObserverRegistry<Self> 字段
  2. 实现 Observable trait,包括 StateError 关联类型
  3. 提供 attachdetach 方法的默认实现

§使用方法

use pattern_macros::observable;

#[observable(state = u64, error = anyhow::Error)]
struct TemperatureSensor {
    temperature: f64,
}

也可以使用自定义的错误类型:

#[observable(state = String, error = std::io::Error)]
struct Logger {
    log_level: u8,
}

§生成的内容

宏会生成以下内容:

  1. 添加 registry: ObserverRegistry<Self> 字段到结构体
  2. 实现 Observable trait,设置 StateError 关联类型
  3. 实现 attachdetach 方法,委托给内部的 registry