summaryrefslogtreecommitdiff
path: root/vendor/petgraph-0.6.5/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/petgraph-0.6.5/src/lib.rs')
-rw-r--r--vendor/petgraph-0.6.5/src/lib.rs291
1 files changed, 0 insertions, 291 deletions
diff --git a/vendor/petgraph-0.6.5/src/lib.rs b/vendor/petgraph-0.6.5/src/lib.rs
deleted file mode 100644
index c34c4eac..00000000
--- a/vendor/petgraph-0.6.5/src/lib.rs
+++ /dev/null
@@ -1,291 +0,0 @@
-//! `petgraph` is a graph data structure library.
-//!
-//! Graphs are collections of nodes, and edges between nodes. `petgraph`
-//! provides several [graph types](index.html#graph-types) (each differing in the
-//! tradeoffs taken in their internal representation),
-//! [algorithms](./algo/index.html#functions) on those graphs, and functionality to
-//! [output graphs](./dot/struct.Dot.html) in
-//! [`graphviz`](https://www.graphviz.org/) format. Both nodes and edges
-//! can have arbitrary associated data, and edges may be either directed or undirected.
-//!
-//! # Example
-//!
-//! ```rust
-//! use petgraph::graph::{NodeIndex, UnGraph};
-//! use petgraph::algo::{dijkstra, min_spanning_tree};
-//! use petgraph::data::FromElements;
-//! use petgraph::dot::{Dot, Config};
-//!
-//! // Create an undirected graph with `i32` nodes and edges with `()` associated data.
-//! let g = UnGraph::<i32, ()>::from_edges(&[
-//! (1, 2), (2, 3), (3, 4),
-//! (1, 4)]);
-//!
-//! // Find the shortest path from `1` to `4` using `1` as the cost for every edge.
-//! let node_map = dijkstra(&g, 1.into(), Some(4.into()), |_| 1);
-//! assert_eq!(&1i32, node_map.get(&NodeIndex::new(4)).unwrap());
-//!
-//! // Get the minimum spanning tree of the graph as a new graph, and check that
-//! // one edge was trimmed.
-//! let mst = UnGraph::<_, _>::from_elements(min_spanning_tree(&g));
-//! assert_eq!(g.raw_edges().len() - 1, mst.raw_edges().len());
-//!
-//! // Output the tree to `graphviz` `DOT` format
-//! println!("{:?}", Dot::with_config(&mst, &[Config::EdgeNoLabel]));
-//! // graph {
-//! // 0 [label="\"0\""]
-//! // 1 [label="\"0\""]
-//! // 2 [label="\"0\""]
-//! // 3 [label="\"0\""]
-//! // 1 -- 2
-//! // 3 -- 4
-//! // 2 -- 3
-//! // }
-//! ```
-//!
-//! # Graph types
-//!
-//! * [`Graph`](./graph/struct.Graph.html) -
-//! An adjacency list graph with arbitrary associated data.
-//! * [`StableGraph`](./stable_graph/struct.StableGraph.html) -
-//! Similar to `Graph`, but it keeps indices stable across removals.
-//! * [`GraphMap`](./graphmap/struct.GraphMap.html) -
-//! An adjacency list graph backed by a hash table. The node identifiers are the keys
-//! into the table.
-//! * [`MatrixGraph`](./matrix_graph/struct.MatrixGraph.html) -
-//! An adjacency matrix graph.
-//! * [`CSR`](./csr/struct.Csr.html) -
-//! A sparse adjacency matrix graph with arbitrary associated data.
-//!
-//! ### Generic parameters
-//!
-//! Each graph type is generic over a handful of parameters. All graphs share 3 common
-//! parameters, `N`, `E`, and `Ty`. This is a broad overview of what those are. Each
-//! type's documentation will have finer detail on these parameters.
-//!
-//! `N` & `E` are called *weights* in this implementation, and are associated with
-//! nodes and edges respectively. They can generally be of arbitrary type, and don't have to
-//! be what you might conventionally consider weight-like. For example, using `&str` for `N`
-//! will work. Many algorithms that require costs let you provide a cost function that
-//! translates your `N` and `E` weights into costs appropriate to the algorithm. Some graph
-//! types and choices do impose bounds on `N` or `E`.
-//! [`min_spanning_tree`](./algo/fn.min_spanning_tree.html) for example requires edge weights that
-//! implement [`PartialOrd`](https://doc.rust-lang.org/stable/core/cmp/trait.PartialOrd.html).
-//! [`GraphMap`](./graphmap/struct.GraphMap.html) requires node weights that can serve as hash
-//! map keys, since that graph type does not create standalone node indices.
-//!
-//! `Ty` controls whether edges are [`Directed`](./enum.Directed.html) or
-//! [`Undirected`](./enum.Undirected.html).
-//!
-//! `Ix` appears on graph types that use indices. It is exposed so you can control
-//! the size of node and edge indices, and therefore the memory footprint of your graphs.
-//! Allowed values are `u8`, `u16`, `u32`, and `usize`, with `u32` being the default.
-//!
-//! ### Shorthand types
-//!
-//! Each graph type vends a few shorthand type definitions that name some specific
-//! generic choices. For example, [`DiGraph<_, _>`](./graph/type.DiGraph.html) is shorthand
-//! for [`Graph<_, _, Directed>`](graph/struct.Graph.html).
-//! [`UnMatrix<_, _>`](./matrix_graph/type.UnMatrix.html) is shorthand for
-//! [`MatrixGraph<_, _, Undirected>`](./matrix_graph/struct.MatrixGraph.html). Each graph type's
-//! module documentation lists the available shorthand types.
-//!
-//! # Crate features
-//!
-//! * **serde-1** -
-//! Defaults off. Enables serialization for ``Graph, StableGraph, GraphMap`` using
-//! [`serde 1.0`](https://crates.io/crates/serde). May require a more recent version
-//! of Rust than petgraph alone.
-//! * **graphmap** -
-//! Defaults on. Enables [`GraphMap`](./graphmap/struct.GraphMap.html).
-//! * **stable_graph** -
-//! Defaults on. Enables [`StableGraph`](./stable_graph/struct.StableGraph.html).
-//! * **matrix_graph** -
-//! Defaults on. Enables [`MatrixGraph`](./matrix_graph/struct.MatrixGraph.html).
-//!
-#![doc(html_root_url = "https://docs.rs/petgraph/0.4/")]
-
-extern crate fixedbitset;
-#[cfg(feature = "graphmap")]
-extern crate indexmap;
-
-#[cfg(feature = "serde-1")]
-extern crate serde;
-#[cfg(feature = "serde-1")]
-#[macro_use]
-extern crate serde_derive;
-
-#[cfg(all(feature = "serde-1", test))]
-extern crate itertools;
-
-#[doc(no_inline)]
-pub use crate::graph::Graph;
-
-pub use crate::Direction::{Incoming, Outgoing};
-
-#[macro_use]
-mod macros;
-mod scored;
-
-// these modules define trait-implementing macros
-#[macro_use]
-pub mod visit;
-#[macro_use]
-pub mod data;
-
-pub mod adj;
-pub mod algo;
-pub mod csr;
-pub mod dot;
-#[cfg(feature = "generate")]
-pub mod generate;
-mod graph_impl;
-#[cfg(feature = "graphmap")]
-pub mod graphmap;
-mod iter_format;
-mod iter_utils;
-#[cfg(feature = "matrix_graph")]
-pub mod matrix_graph;
-#[cfg(feature = "quickcheck")]
-mod quickcheck;
-#[cfg(feature = "serde-1")]
-mod serde_utils;
-mod traits_graph;
-pub mod unionfind;
-mod util;
-
-pub mod operator;
-pub mod prelude;
-
-/// `Graph<N, E, Ty, Ix>` is a graph datastructure using an adjacency list representation.
-pub mod graph {
- pub use crate::graph_impl::{
- edge_index, node_index, DefaultIx, DiGraph, Edge, EdgeIndex, EdgeIndices, EdgeReference,
- EdgeReferences, EdgeWeightsMut, Edges, EdgesConnecting, Externals, Frozen, Graph,
- GraphIndex, IndexType, Neighbors, Node, NodeIndex, NodeIndices, NodeReferences,
- NodeWeightsMut, UnGraph, WalkNeighbors,
- };
-}
-
-#[cfg(feature = "stable_graph")]
-pub use crate::graph_impl::stable_graph;
-
-// Index into the NodeIndex and EdgeIndex arrays
-/// Edge direction.
-#[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Ord, Eq, Hash)]
-#[repr(usize)]
-pub enum Direction {
- /// An `Outgoing` edge is an outward edge *from* the current node.
- Outgoing = 0,
- /// An `Incoming` edge is an inbound edge *to* the current node.
- Incoming = 1,
-}
-
-impl Direction {
- /// Return the opposite `Direction`.
- #[inline]
- pub fn opposite(self) -> Direction {
- match self {
- Outgoing => Incoming,
- Incoming => Outgoing,
- }
- }
-
- /// Return `0` for `Outgoing` and `1` for `Incoming`.
- #[inline]
- pub fn index(self) -> usize {
- (self as usize) & 0x1
- }
-}
-
-#[doc(hidden)]
-pub use crate::Direction as EdgeDirection;
-
-/// Marker type for a directed graph.
-#[derive(Clone, Copy, Debug)]
-pub enum Directed {}
-
-/// Marker type for an undirected graph.
-#[derive(Clone, Copy, Debug)]
-pub enum Undirected {}
-
-/// A graph's edge type determines whether it has directed edges or not.
-pub trait EdgeType {
- fn is_directed() -> bool;
-}
-
-impl EdgeType for Directed {
- #[inline]
- fn is_directed() -> bool {
- true
- }
-}
-
-impl EdgeType for Undirected {
- #[inline]
- fn is_directed() -> bool {
- false
- }
-}
-
-/// Convert an element like `(i, j)` or `(i, j, w)` into
-/// a triple of source, target, edge weight.
-///
-/// For `Graph::from_edges` and `GraphMap::from_edges`.
-pub trait IntoWeightedEdge<E> {
- type NodeId;
- fn into_weighted_edge(self) -> (Self::NodeId, Self::NodeId, E);
-}
-
-impl<Ix, E> IntoWeightedEdge<E> for (Ix, Ix)
-where
- E: Default,
-{
- type NodeId = Ix;
-
- fn into_weighted_edge(self) -> (Ix, Ix, E) {
- let (s, t) = self;
- (s, t, E::default())
- }
-}
-
-impl<Ix, E> IntoWeightedEdge<E> for (Ix, Ix, E) {
- type NodeId = Ix;
- fn into_weighted_edge(self) -> (Ix, Ix, E) {
- self
- }
-}
-
-impl<'a, Ix, E> IntoWeightedEdge<E> for (Ix, Ix, &'a E)
-where
- E: Clone,
-{
- type NodeId = Ix;
- fn into_weighted_edge(self) -> (Ix, Ix, E) {
- let (a, b, c) = self;
- (a, b, c.clone())
- }
-}
-
-impl<'a, Ix, E> IntoWeightedEdge<E> for &'a (Ix, Ix)
-where
- Ix: Copy,
- E: Default,
-{
- type NodeId = Ix;
- fn into_weighted_edge(self) -> (Ix, Ix, E) {
- let (s, t) = *self;
- (s, t, E::default())
- }
-}
-
-impl<'a, Ix, E> IntoWeightedEdge<E> for &'a (Ix, Ix, E)
-where
- Ix: Copy,
- E: Clone,
-{
- type NodeId = Ix;
- fn into_weighted_edge(self) -> (Ix, Ix, E) {
- self.clone()
- }
-}