1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! # Graaf
//!
//! Functions and types for working with graphs
//!
//! ## Examples
//!
//! ```
//! use graaf::{
//!     op::{
//!         AddEdge,
//!         Indegree,
//!         Outdegree,
//!     },
//!     repr::AdjacencyMatrix,
//! };
//!
//! let mut adj = AdjacencyMatrix::<4>::new();
//!
//! adj.add_edge(0, 1);
//! adj.add_edge(0, 2);
//! adj.add_edge(1, 3);
//! adj.add_edge(2, 3);
//!
//! assert_eq!(adj.indegree(0), 0);
//! assert_eq!(adj.indegree(1), 1);
//! assert_eq!(adj.indegree(2), 1);
//! assert_eq!(adj.indegree(3), 2);
//!
//! assert_eq!(adj.outdegree(0), 2);
//! assert_eq!(adj.outdegree(1), 1);
//! assert_eq!(adj.outdegree(2), 1);
//! assert_eq!(adj.outdegree(3), 0);
//! ```

// Rustdoc
#![allow(incomplete_features)]
#![feature(assert_matches, generic_const_exprs)]

/// Graph algorithms
pub mod algo;

/// Operations on graphs
pub mod op;

/// Types that represent graphs
pub mod repr;