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)。