https://github.com/filipporanza/simplegraph
A simple graph implementation
https://github.com/filipporanza/simplegraph
adjacency-list adjacency-matrix graph graph-library
Last synced: 6 months ago
JSON representation
A simple graph implementation
- Host: GitHub
- URL: https://github.com/filipporanza/simplegraph
- Owner: FilippoRanza
- License: mit
- Created: 2022-04-27T13:36:37.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-06-07T16:41:07.000Z (over 3 years ago)
- Last Synced: 2025-04-14T22:56:28.585Z (6 months ago)
- Topics: adjacency-list, adjacency-matrix, graph, graph-library
- Language: Rust
- Homepage: https://crates.io/crates/simplegraph
- Size: 61.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# simplegraph
 
[](http://makeapullrequest.com)**simplegraph** provides a simple graph implementation
in Rust.## Features
**simplegraph** aims to be as simple as possible while providing
all the features that I need.
You can consider using **simplegraph** if you need:
- support for direct and undirected graphs;
- [Adjacency List](https://en.wikipedia.org/wiki/Adjacency_list) or [Adjacency Matrix](https://en.wikipedia.org/wiki/Adjacency_matrix) based graphs;
- Graph to [Graphviz](https://en.wikipedia.org/wiki/Adjacency_list) (dot) source conversion;
- Serialization and Deserialization support with [Serde](https://serde.rs/);
- dynamic arc insertion;
- update arc's and nodes' weights.On the other side some intentional restriction are set on the graphs:
- the number of nodes is set at creation time
- nodes' and arcs' weights *must* implement [num_traits::Num](https://docs.rs/num-traits/latest/num_traits/trait.Num.html)
- weights are always present: it is not possible to create a simple unweighted graph.**simplegraph** does not provide any check on the operation performed on it. It is
caller's responsibility to ensure operations soundness.## Why?
To my best knowledge [petgrah](https://github.com/petgraph/petgraph)
is the most used general purpose graph library for Rust.
It is a very complete and complex library that allows to implement complex
graphs for various purposes.
If you choose/need to use a graph library you should check it out too.**simplegraph** aims to be a simple *wrap* around adjacency list or matrix.
I've implemented this library mainly for my own use and avoid
some - from my point of view - needless complexities. So it may
lack some features that I'll add just when, and if, I'll need them.