2 个版本
0.0.28 | 2023年10月20日 |
---|---|
0.0.27 | 2023年10月19日 |
#150 在 #match
70KB
1.5K SLoC
wasm-detective
Rust 辅助库,用于在 streamdal/wasm
Wasm 函数中执行值匹配。
有关可用匹配器,请查看协议中列出的枚举。
安装
cargo add streamdal-protos
cargo add streamdal-wasm-detective
使用方法
fn main() {
let det = detective::Detective::new();
let sample_json = r#"{
"field1": {
"field2": "2"
}
}"#;
let request = Request {
match_type: DetectiveType::DETECTIVE_TYPE_HAS_FIELD,
data: &sample_json.as_bytes().to_vec(),
path: "field1".to_string(),
args: vec!["1".to_string()],
negate: false,
};
match det.matches(&request) {
Ok(value) => println!("Result: {:#?}", value),
Err(err) => println!("Error: {:#?}", err),
}
}
关于正则表达式
基于正则表达式的匹配器目前较慢,因为我们必须在每次调用时编译模式。
当我们在 SDK 中实现 K/V 功能时,这将得到改善。
想法是,WASM 函数将获得在缓存中 GET/PUT 项的能力,因此 detective
将连接到接受一个允许与缓存函数一起工作的特质的参数。
如果向 detective
提供了 K/V 特质 - 在编译正则表达式模式之前,它将首先检查缓存是否已经包含它。如果是,则使用它;如果不是,则编译并将其放入缓存。
~DS 06-29-2023
开发
必须使用 Rust nightly(因为我们使用 #![feature(test)]
来启用基准测试能力)来测试库。
要安装 nightly: rustup install nightly
要使用 nightly 运行测试: cargo +nightly test
要使用 nightly 运行基准测试: cargo +nightly bench
您还可以使用 rustup default nightly
将 nightly 设置为默认。
依赖关系
~14MB
~221K SLoC