Skip to main content

RuleStorage

Trait RuleStorage 

Source
pub trait RuleStorage:
    Send
    + Sync
    + 'static {
    // Required methods
    fn add(&self, rule: TriggerRule);
    fn remove(&self, rule_id: &str) -> Option<TriggerRule>;
    fn get(&self, rule_id: &str) -> Option<TriggerRule>;
    fn update(&self, rule: TriggerRule) -> bool;
    fn list(&self) -> Vec<TriggerRule>;
    fn count(&self) -> usize;
}
Expand description

触发规则存储后端 trait。

实现此 trait 以自定义规则持久化方式(如数据库、文件等)。 默认提供 InMemoryRuleStorage(内存存储)。

§Example

use anycms_event::trigger::{RuleStorage, TriggerRule, InMemoryRuleStorage};

let storage = Arc::new(InMemoryRuleStorage::new());
let engine = TriggerRuleEngine::with_storage(bus, storage.clone());

Required Methods§

Source

fn add(&self, rule: TriggerRule)

添加一条规则。

Source

fn remove(&self, rule_id: &str) -> Option<TriggerRule>

移除一条规则(按 ID)。返回被移除的规则。

Source

fn get(&self, rule_id: &str) -> Option<TriggerRule>

获取指定 ID 的规则。

Source

fn update(&self, rule: TriggerRule) -> bool

更新一条规则(根据 rule.id 查找并替换)。返回是否成功。

Source

fn list(&self) -> Vec<TriggerRule>

获取所有规则(按 priority 排序)。

Source

fn count(&self) -> usize

获取规则数量。

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§