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
// Copyright 2019 Octavian Oncescu //! # Graphlib //! Graphlib is a simple and powerful rust library for the graph data-structure. //! //! --- //! //! This library attempts to provide a generic api for building, mutating and iterating over graphs that is similar to that of other data-structures in rust i.e. `Vec`, `HashMap`, `VecDeque`, etc. //! //! ### Usage //! ```rust //! 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); //! ``` mod edge; #[macro_use] mod macros; mod graph; pub mod iterators; mod vertex_id; pub use graph::*; pub use vertex_id::*;