#data-structures #dag #graph #incremental #topological

incremental-topo

Data structure to maintain an incremental topological ordering over a collection of values

5 releases

Uses new Rust 2021

0.2.1 Jul 14, 2022
0.2.0 Jul 10, 2022
0.1.2 Aug 2, 2019
0.1.1 Sep 19, 2018
0.1.0 Sep 5, 2018

#251 in Data structures

Download history 55/week @ 2022-04-21 27/week @ 2022-04-28 135/week @ 2022-05-05 154/week @ 2022-05-12 72/week @ 2022-05-19 46/week @ 2022-05-26 313/week @ 2022-06-02 172/week @ 2022-06-09 184/week @ 2022-06-16 21/week @ 2022-06-23 35/week @ 2022-06-30 27/week @ 2022-07-07 43/week @ 2022-07-14 39/week @ 2022-07-21 67/week @ 2022-07-28 35/week @ 2022-08-04

189 downloads per month
Used in p2panda-rs

MIT/Apache

43KB
548 lines

Incremental Topo

Crates.io Travis CI Documentation

A data structure for maintaining an topological ordering in an incremental fashion.

Usage

To use incremental-topo, first add this to your Cargo.toml:

[dependencies]
incremental-topo = "0.2.1"

Next, add this to your crate:

use incremental_topo::IncrementalTopo;

let mut dag = IncrementalTopo::new();

let cat = dag.add_node();
let dog = dag.add_node();
let human = dag.add_node();

assert_eq!(dag.len(), 3);

dag.add_dependency(&human, &dog).unwrap();
dag.add_dependency(&human, &cat).unwrap();
dag.add_dependency(&dog, &cat).unwrap();

let animal_order: Vec<_> = dag.descendants(&human).unwrap().collect();

assert_eq!(animal_order, vec![dog, cat]);

See documentation for more details.

License

This project is dual licensed under the MIT license and Apache 2.0 license.

Dependencies

~155KB