3 个版本 (1 个稳定版)
1.0.1 | 2020 年 3 月 8 日 |
---|---|
0.2.1 | 2020 年 1 月 4 日 |
0.2.0 | 2020 年 1 月 4 日 |
#2485 在 Rust 模式
13KB
223 行
评估器
提供用于返回值而不接受参数的逻辑结构的接口和实现,这些结构通过闭包捕获、全局状态、计算或其他方式实现。
使用方法
评估器类型
三个主要的评估器类型是 ImmEval
、Eval
和 RcEval
(还有很少使用的 DummyEval
,它除了用于动态分派评估器调用外很少有用)。
ImmEval
使用闭包无缓存地评估 Sized
值。
Eval
使用内部缓存评估 Copy
-able 值。
RcEval
通过返回结果引用计数器来评估所有类型的值。最灵活但最慢的类型。
DummyEval
接收一个 Clone
-able(记住,Copy
意味着 Clone
)对象,并在评估时返回它。如果放置的评估器总是返回相同的值,那么如果你有一个 Box<dyn Evaluator>
并想节省一些闭包间接引用的开销,这很有用。
你可以通过实现 Evaluator
和 RcEvaluator
特性来自定义评估器,这些特性负责 eval()
方法。
创建评估器
使用 From
特性创建评估器,只接受闭包作为参数。它们接受闭包(或任何实现 Fn
的类型)作为输入,这些闭包返回评估器接受的值类型(Sized 用于
ImmEval
、Copy
用于 Eval
和任何值用于 RcEval
)。