7 个版本
0.3.0 | 2023年5月24日 |
---|---|
0.2.0 | 2023年3月17日 |
0.1.4 | 2023年1月30日 |
#1006 in Rust 模式
每月 28 次下载
27KB
524 行
Scientisto
scientisto
是github/scientist库的轻量级Rust实现,用于谨慎重构关键代码路径。它提供了用于定义所进行的实验和发布工具的 Experiment
结构体。
关于
该库旨在尽可能简单,不引入任何外部依赖,并从 std
库中只使用最少的功能。
使用方法
Experiment
和 AsyncExperiment
结构体代表控制执行和实验执行代码路径的定义。
实验由在 Experiment
构造期间指定的配置引导,并通过 publish
函数内部发布结果观察。
use scientisto::{Experiment,Observation};
use tracing;
let expected: i32 = 1;
let result = Experiment::new("Test")
.control(|| expected)
.experiment(|| expected + 1)
.publish(|o: &Observation<i32, i32>| {
tracing::info!("You can do any magic in the publisher")
})
.run();
对于 async
代码,可以使用 AsyncExperiment
作为替代。
use scientisto::{AsyncExperiment,Observation};
use tracing::info;
async_std::task::block_on(async {
AsyncExperiment::new("Test")
.control(async { 3.0 })
.experiment(async { 3.0 })
.publish(|o: &Observation<f32, f32>| {
assert!(o.is_matching());
info!("Any logic, including side effects, can be here!")
})
.run().await;
})
限制
- 没有为
control
和experiment
回调提供默认值,它们必须完全指定。
测试
当前代码覆盖率(包括测试)
许可证
MIT
依赖项
~1MB
~16K SLoC