1 个不稳定发布
0.1.0 | 2022年11月14日 |
---|
#42 在 #dag
11KB
123 行
inference_graph
提供了一些主要项目
- 一个
Graph
定义。 - 一种通过
graph.stage_node
向Graph
添加Node
的方法。 - 一种使用某些输入执行
Graph
的方法。 - 一个
wrap!
宏,将您的异步函数转换为与操作兼容的函数。
节点还需要指定一个 op
,这几乎是一个 async fn(Vec<String>) -> String
,但由于 Rust 类型别名不喜欢异步函数,所以并不是 完全 那种类型。幸运的是,我们还提供了一个 wrap!
,它允许您传入一个 async fn(Vec<String>) -> String
并将其转换为所需的确切类型。
创建一个图,添加一些使用操作来连接传递给参数的字符串的节点,并检索输出可能看起来像这样
use inference_graph::graph::Graph;
use inference_graph::wrap;
async fn concat(x: Vec<String>) -> String {
x.concat()
}
#[tokio::main]
async fn main() {
let mut graph = Graph::default();
graph.stage_node("A".into(), vec!["entrypoint".into()], wrap!(concat));
graph.stage_node("B".into(), vec!["entrypoint".into()], wrap!(concat));
graph.stage_node("C".into(), vec!["A".into(), "B".into()], wrap!(concat));
let output = graph.run("hubba".into(), "C".into()).await;
assert_eq!(output.unwrap(), "hubbahubba".to_string());
}
依赖关系
~2.8–4.5MB
~72K SLoC