8 个版本
0.2.0 | 2020 年 12 月 27 日 |
---|---|
0.1.6 | 2020 年 12 月 25 日 |
0.1.5 | 2020 年 7 月 9 日 |
#286 在 构建实用工具
45 每月下载量
用于 2 crates
31KB
612 行
依赖图
这是一个用于在依赖图中执行迭代操作的 Rust 库。
用法
[dependencies]
dep-graph = "0.2"
该库默认支持顺序和并行(多线程)操作。默认情况下,多线程操作将运行与核心数相等的线程数。
并行操作
以下是一个如何使用此库的简单示例
use dep_graph::{Node, DepGraph};
#[cfg(feature = "parallel")]
use rayon::prelude::*;
// Create a list of nodes
let mut root = Node::new("root");
let mut dep1 = Node::new("dep1");
let mut dep2 = Node::new("dep2");
let leaf = Node::new("leaf");
// Map their connections
root.add_dep(dep1.id());
root.add_dep(dep2.id());
dep1.add_dep(leaf.id());
dep2.add_dep(leaf.id());
// Create a graph
let nodes = vec![root, dep1, dep2, leaf];
// Print the name of all nodes in the dependency graph.
// This will parse the dependency graph sequentially
{
let graph = DepGraph::new(&nodes);
graph
.into_iter()
.for_each(|node| {
println!("{:?}", node)
});
}
// This is the same as the previous command, excepts it leverages rayon
// to process them in parallel as much as possible.
#[cfg(feature = "parallel")]
{
let graph = DepGraph::new(&nodes);
graph
.into_par_iter()
.for_each(|node| {
// The node is a dep_graph::Wrapper object, not a String.
// We need to use `*node` to get its value.
println!("{:?}", *node)
});
}
依赖项
~25–415KB