#闭包 #接口 #捕获 #计算 # #参数 #状态

evaluator

提供用于返回值而不接受参数的逻辑结构的接口和实现,这些结构通过闭包捕获、全局状态、计算或其他方式实现。

3 个版本 (1 个稳定版)

1.0.1 2020 年 3 月 8 日
0.2.1 2020 年 1 月 4 日
0.2.0 2020 年 1 月 4 日

#2485Rust 模式

CC0 许可证

13KB
223

评估器

Crates.io

提供用于返回值而不接受参数的逻辑结构的接口和实现,这些结构通过闭包捕获、全局状态、计算或其他方式实现。

使用方法

评估器类型

三个主要的评估器类型是 ImmEvalEvalRcEval(还有很少使用的 DummyEval,它除了用于动态分派评估器调用外很少有用)。

ImmEval

使用闭包无缓存地评估 Sized 值。

Eval

使用内部缓存评估 Copy-able 值。

RcEval

通过返回结果引用计数器来评估所有类型的值。最灵活但最慢的类型。

DummyEval

接收一个 Clone-able(记住,Copy 意味着 Clone)对象,并在评估时返回它。如果放置的评估器总是返回相同的值,那么如果你有一个 Box<dyn Evaluator> 并想节省一些闭包间接引用的开销,这很有用。

你可以通过实现 EvaluatorRcEvaluator 特性来自定义评估器,这些特性负责 eval() 方法。

创建评估器

使用 From 特性创建评估器,只接受闭包作为参数。它们接受闭包(或任何实现 Fn 的类型)作为输入,这些闭包返回评估器接受的值类型(Sized 用于 ImmEvalCopy 用于 Eval 和任何值用于 RcEval)。

无运行时依赖