#sample-rate #closures #random #execute #randomly #trivial #lets

randotron

一个简单的库,允许您以采样率随机执行闭包

1 个不稳定版本

0.1.1 2022 年 10 月 4 日

#1495算法

每月 21 次下载

MIT 协议

5KB

randotron

我编写这个库是因为我找不到一种简单的方法来随机执行 Rust 代码。虽然这可能不是经常需要做的事情,但在您只想平均每百次执行一次代码时(如指标记录)很有用。

目前 randotron(我实在想不出更好的名字),需要一个采样率和一个闭包

randotron(100, || { println!("I get printed only 1% of the time!") });

采样率是期望速率的倒数。例如,100 表示 1/100,即平均每百次执行一次。 675 表示代码平均每六百七十五次执行一次。许多库将此值表示为 float,例如,1% 表示为 0.01 而不是 100。在 randotron 中,我们使用 u64 而不是 f64,以使事情更简单。

评估结果

如果闭包被选中执行,randotron 将评估为 Some(result)(其中 result 是闭包独立执行时的结果)。否则,randotron 将评估为 None

方便的采样率

您可以设置采样率为 1,这将始终成功,实际上确保闭包每次都会运行。类似地,尽管通常的速率 0 会引起除以零错误,但在此情况下,它保证闭包永远不会执行,并且始终返回 None

依赖项

~0.6–1.1MB
~24K SLoC