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§
Sourcefn add(&self, rule: TriggerRule)
fn add(&self, rule: TriggerRule)
添加一条规则。
Sourcefn remove(&self, rule_id: &str) -> Option<TriggerRule>
fn remove(&self, rule_id: &str) -> Option<TriggerRule>
移除一条规则(按 ID)。返回被移除的规则。
Sourcefn get(&self, rule_id: &str) -> Option<TriggerRule>
fn get(&self, rule_id: &str) -> Option<TriggerRule>
获取指定 ID 的规则。
Sourcefn update(&self, rule: TriggerRule) -> bool
fn update(&self, rule: TriggerRule) -> bool
更新一条规则(根据 rule.id 查找并替换)。返回是否成功。
Sourcefn list(&self) -> Vec<TriggerRule>
fn list(&self) -> Vec<TriggerRule>
获取所有规则(按 priority 排序)。
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".