pub struct AnyRule {
pub flow: Vec<Box<dyn for<'a> Fn(&mut State<'a>) -> bool + Send + Sync>>,
pub out: Box<dyn for<'a> Fn(State<'a>) -> Hit<'a, RuleResult<'a>> + Send + Sync>,
}Expand description
灵活的规则定义器。
一个规则由一系列的条件流(flow)和一个输出生成器(out)组成。
只有当 flow 中的所有条件都返回 true 时,规则才算命中,
并调用 out 生成最终的 Hit 报告。
Fields§
§flow: Vec<Box<dyn for<'a> Fn(&mut State<'a>) -> bool + Send + Sync>>规则流:一系列依次执行的闭包,可修改 State 并返回是否继续执行。
out: Box<dyn for<'a> Fn(State<'a>) -> Hit<'a, RuleResult<'a>> + Send + Sync>结果生成器:当所有 flow 都通过时,将 State 转换为 Hit。
Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for AnyRule
impl !UnwindSafe for AnyRule
impl Freeze for AnyRule
impl Send for AnyRule
impl Sync for AnyRule
impl Unpin for AnyRule
impl UnsafeUnpin for AnyRule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more