#graph #data-structures #mutable #graph-algorithm #no-std

no-std graphlib

Graphlib is a simple and powerful rust library for the graph data-structure

19 releases

0.6.3 Nov 9, 2021
0.6.2 Apr 14, 2020
0.6.1 Feb 18, 2020
0.5.3 Oct 4, 2019
0.2.3 Mar 27, 2019

#1095 in Data structures

Download history 19/week @ 2022-11-28 119/week @ 2022-12-05 65/week @ 2022-12-12 42/week @ 2022-12-19 70/week @ 2022-12-26 24/week @ 2023-01-02 34/week @ 2023-01-09 35/week @ 2023-01-16 137/week @ 2023-01-23 138/week @ 2023-01-30 190/week @ 2023-02-06 190/week @ 2023-02-13 100/week @ 2023-02-20 74/week @ 2023-02-27 77/week @ 2023-03-06 33/week @ 2023-03-13

306 downloads per month
Used in sac-base

MIT license

105KB
1.5K SLoC

Graphlib

Build Status Discord Badge Latest Version Documentation

Graphlib is a simple and powerful Rust graph library.


This library attempts to provide a generic api for building, mutating and iterating over graphs that is similar to that of other data-structures found in Rust i.e. Vec, HashMap, VecDeque, etc.

Using Graphlib

use graphlib::Graph;

let mut graph: Graph<usize> = Graph::new();

// Add two vertices to the graph
let id1 = graph.add_vertex(1);
let id2 = graph.add_vertex(2);

// Add an edge between the two vertices
graph.add_edge(&id1, &id2);

assert_eq!(*graph.fetch(&id1).unwrap(), 1);
assert_eq!(*graph.fetch(&id2).unwrap(), 2);

// The graph has 2 vertices and one edge at this point
assert_eq!(graph.vertex_count(), 2);
assert_eq!(graph.edge_count(), 1);

// Remove one of the connected vertices
graph.remove(&id1);

assert_eq!(graph.vertex_count(), 1);
assert_eq!(graph.edge_count(), 0);

Using without std

In Cargo.toml:

[dependencies]
graphlib = { version = "*", features = ["no_std"] }

Contributing

We welcome anyone wishing to contribute to Graphlib! Check out the issues section of the repository before starting out.

License

Graphlib is licensed under the MIT license.

Dependencies

~1MB
~19K SLoC