summaryrefslogtreecommitdiffstats
path: root/third_party/rust/petgraph/README.rst
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/petgraph/README.rst')
-rw-r--r--third_party/rust/petgraph/README.rst416
1 files changed, 416 insertions, 0 deletions
diff --git a/third_party/rust/petgraph/README.rst b/third_party/rust/petgraph/README.rst
new file mode 100644
index 0000000000..3c384852ed
--- /dev/null
+++ b/third_party/rust/petgraph/README.rst
@@ -0,0 +1,416 @@
+
+petgraph
+========
+
+Graph data structure library. Known to support Rust 1.37 and later.
+
+Please read the `API documentation here`__
+
+__ https://docs.rs/petgraph/
+
+|build_status|_ |crates|_
+
+.. |build_status| image:: https://travis-ci.org/petgraph/petgraph.svg?branch=master
+.. _build_status: https://travis-ci.org/petgraph/petgraph
+
+.. |crates| image:: http://meritbadge.herokuapp.com/petgraph
+.. _crates: https://crates.io/crates/petgraph
+
+Crate feature flags:
+
+- ``graphmap`` (default) enable ``GraphMap``.
+- ``stable_graph`` (default) enable ``StableGraph``.
+- ``matrix_graph`` (default) enable ``MatrixGraph``.
+- ``serde-1`` (optional) enable serialization for ``Graph, StableGraph`` using
+ serde 1.0. Requires Rust version as required by serde.
+
+Recent Changes
+--------------
+
+- 0.5.1
+
+ - Implement ``Default`` for traversals.
+ - Export ``EdgesConnecting`` publicly.
+ - Implement ``is_bipartite_graph``.
+ - Add ``FilterNode`` implementation for ``FixedBitSet`` and ``HashSet``.
+ - Implement ``node_weights_mut`` and ``edge_weights_mut`` for ``StableGraph``.
+ - Add configurable functions for adding attributes to dotfile features.
+
+- 0.5.0
+
+ - Breaking changes:
+
+ - The iterative DFS implementation, ``Dfs``, now marks nodes visited when
+ they are pushed onto the stack, not when they're popped off. This may
+ require changes to callers that use ``Dfs::from_parts`` or manipulate
+ its internals.
+ - The ``IntoEdgesDirected`` trait now has a stricter contract for
+ undirected graphs. Custom implementations of this trait may have to be
+ updated. See the `trait documentation`__ for more.
+
+ - Other changes:
+
+ - Upgrade to Rust 2018 edition
+ - Fix clippy warnings and unify code formatting
+ - Improved and enhanced documentation
+ - Update dependencies including modern quickcheck
+ - Numerous bugfixes and refactorings
+ - Added ``MatrixGraph`` implementation
+
+__ https://docs.rs/petgraph/0.5/petgraph/visit/trait.IntoEdgesDirected.html
+
+- 0.4.13
+
+ - Fix clippy warnings by @jonasbb
+ - Add docs for ``Csr`` by @ksadorf
+ - Fix conflict with new stable method ``find_map`` in new Rust
+
+- 0.4.12
+
+ - Newtype ``Time`` now also implements ``Hash``
+ - Documentation updates for ``Frozen``.
+
+- 0.4.11
+
+ - Fix ``petgraph::graph::NodeReferences`` to be publicly visible
+ - Small doc typo and code style files by @shepmaster and @waywardmonkeys
+ - Fix a future compat warning with pointer casts
+
+- 0.4.10
+
+ - Add graph trait ``IntoEdgesDirected``
+ - Update dependencies
+
+- 0.4.9
+
+ - Fix ``bellman_ford`` to work correctly with undirected graphs (#152) by
+ @carrutstick
+ - Performance improvements for ``Graph, Stablegraph``'s ``.map()``.
+
+- 0.4.8
+
+ - ``StableGraph`` learned new methods nearing parity with ``Graph``. Note
+ that the ``StableGraph`` methods preserve index stability even in the batch
+ removal methods like ``filter_map`` and ``retain_edges``.
+
+ + Added ``.filter_map()``, which maps associated node and edge data
+ + Added ``.retain_edges()``, ``.edge_indices()`` and ``.clear_edges()``
+
+ - Existing ``Graph`` iterators gained some trait impls:
+
+ + ``.node_indices(), .edge_indices()`` are ``ExactSizeIterator``
+ + ``.node_references()`` is now
+ ``DoubleEndedIterator + ExactSizeIterator``.
+ + ``.edge_references()`` is now ``ExactSizeIterator``.
+
+ - Implemented ``From<StableGraph>`` for ``Graph``.
+
+- 0.4.7
+
+ - New algorithm by @jmcomets: A* search algorithm in ``petgraph::algo::astar``
+ - One ``StableGraph`` bug fix whose patch was supposed to be in the previous
+ version:
+
+ + ``add_edge(m, n, _)`` now properly always panics if nodes m or n don't
+ exist in the graph.
+
+- 0.4.6
+
+ - New optional crate feature: ``"serde-1"``, which enables serialization
+ for ``Graph`` and ``StableGraph`` using serde.
+ - Add methods ``new``, ``add_node`` to ``Csr`` by @jmcomets
+ - Add indexing with ``[]`` by node index, ``NodeCompactIndexable`` for
+ ``Csr`` by @jmcomets
+ - Amend doc for ``GraphMap::into_graph`` (it has a case where it can panic)
+ - Add implementation of ``From<Graph>`` for ``StableGraph``.
+ - Add implementation of ``IntoNodeReferences`` for ``&StableGraph``.
+ - Add method ``StableGraph::map`` that maps associated data
+ - Add method ``StableGraph::find_edge_undirected``
+ - Many ``StableGraph`` bug fixes involving node vacancies (holes left by
+ deletions):
+
+ + ``neighbors(n)`` and similar neighbor and edge iterator methods now
+ handle n being a vacancy properly. (This produces an empty iterator.)
+ + ``find_edge(m, n)`` now handles m being a vacancy correctly too
+ + ``StableGraph::node_bound`` was fixed for empty graphs and returns 0
+
+ - Add implementation of ``DoubleEndedIterator`` to ``Graph, StableGraph``'s
+ edge references iterators.
+ - Debug output for ``Graph`` now shows node and edge count. ``Graph, StableGraph``
+ show nothing for the edges list if it's empty (no label).
+ - ``Arbitrary`` implementation for ``StableGraph`` now can produce graphs with
+ vacancies (used by quickcheck)
+
+- 0.4.5
+
+ - Fix ``max`` ambiguity error with current rust nightly by @daboross (#153)
+
+- 0.4.4
+
+ - Add ``GraphMap::all_edges_mut()`` iterator by @Binero
+ - Add ``StableGraph::retain_nodes`` by @Rupsbant
+ - Add ``StableGraph::index_twice_mut`` by @christolliday
+
+- 0.4.3
+
+ - Add crate categories
+
+- 0.4.2
+
+ - Move the ``visit.rs`` file due to changed rules for a module’s directory
+ ownership in Rust, resolving a future compat warning.
+ - The error types ``Cycle, NegativeCycle`` now implement ``PartialEq``.
+
+- 0.4.1
+
+ - Add new algorithm ``simple_fast`` for computing dominators in a control-flow
+ graph.
+
+- 0.4.0
+
+ - Breaking changes in ``Graph``:
+
+ - ``Graph::edges`` and the other edges methods now return an iterator of
+ edge references
+
+ - Other breaking changes:
+
+ - ``toposort`` now returns an error if the graph had a cycle.
+ - ``is_cyclic_directed`` no longer takes a dfs space argument. It is
+ now recursive.
+ - ``scc`` was renamed to ``kosaraju_scc``.
+ - ``min_spanning_tree`` now returns an iterator that needs to be
+ made into a specific graph type deliberately.
+ - ``dijkstra`` now uses the ``IntoEdges`` trait.
+ - ``NodeIndexable`` changed its method signatures.
+ - ``IntoExternals`` was removed, and many other smaller adjustments
+ in graph traits. ``NodeId`` must now implement ``PartialEq``, for example.
+ - ``DfsIter, BfsIter`` were removed in favour of a more general approach
+ with the ``Walker`` trait and its iterator conversion.
+
+ - New features:
+
+ - New graph traits, for example ``IntoEdges`` which returns
+ an iterator of edge references. Everything implements the graph traits
+ much more consistently.
+ - Traits for associated data access and building graphs: ``DataMap``,
+ ``Build, Create, FromElements``.
+ - Graph adaptors: ``EdgeFiltered``. ``Filtered`` was renamed to ``NodeFiltered``.
+ - New algorithms: bellman-ford
+ - New graph: compressed sparse row (``Csr``).
+ - ``GraphMap`` implements ``NodeIndexable``.
+ - ``Dot`` was generalized
+
+- 0.3.2
+
+ - Add ``depth_first_search``, a recursive dfs visitor that emits discovery,
+ finishing and edge classification events.
+ - Add graph adaptor ``Filtered``.
+ - impl ``Debug, NodeIndexable`` for ``Reversed``.
+
+- 0.3.1
+
+ - Add ``.edges(), .edges_directed()`` to ``StableGraph``. Note that these
+ differ from ``Graph``, because this is the signature they will all use
+ in the future.
+ - Add ``.update_edge()`` to ``StableGraph``.
+ - Add reexports of common items in ``stable_graph`` module (for example
+ ``NodeIndex``).
+ - Minor performance improvements to graph iteration
+ - Improved docs for ``visit`` module.
+
+- 0.3.0
+
+ - Overhaul all graph visitor traits so that they use the ``IntoIterator``
+ style. This makes them composable.
+
+ - Multiple graph algorithms use new visitor traits.
+ - **Help is welcome to port more algorithms (and create new graph traits in
+ the process)!**
+
+ - ``GraphMap`` can now have directed edges. ``GraphMap::new`` is now generic
+ in the edge type. ``DiGraphMap`` and ``UnGraphMap`` are new type aliases.
+ - Add type aliases ``DiGraph, UnGraph, StableDiGraph, StableUnGraph``
+ - ``GraphMap`` is based on the indexmap crate. Deterministic iteration
+ order, faster iteration, no side tables needed to convert to ``Graph``.
+ - Improved docs for a lot of types and functions.
+ - Add graph visitor ``DfsPostOrder``
+ - ``Dfs`` gained new methods ``from_parts`` and ``reset``.
+ - New algo ``has_path_connecting``.
+ - New algo ``tarjan_scc``, a second scc implementation.
+ - Document traversal order in ``Dfs, DfsPostOrder, scc, tarjan_scc``.
+ - Optional graph visitor workspace reuse in ``has_path_connecting``,
+ ``is_cyclic_directed, toposort``.
+ - Improved ``Debug`` formatting for ``Graph, StableGraph``.
+ - Add a prelude module
+ - ``GraphMap`` now has a method ``.into_graph()`` that makes a ``Graph``.
+ - ``Graph::retain_nodes, retain_edges`` now expose the self graph only
+ as wrapped in ``Frozen``, so that weights can be mutated but the
+ graph structure not.
+ - Enable ``StableGraph`` by default
+ - Add method ``Graph::contains_edge``.
+ - Renamed ``EdgeDirection`` → ``Direction``.
+ - Remove ``SubTopo``.
+ - Require Rust 1.12 or later
+
+- 0.2.10
+
+ - Fix compilation with rust nightly
+
+- 0.2.9
+
+ - Fix a bug in SubTopo (#81)
+
+- 0.2.8
+
+ - Add Graph methods reserve_nodes, reserve_edges, reserve_exact_nodes,
+ reserve_exact_edges, shrink_to_fit_edges, shrink_to_fit_nodes, shrink_to_fit
+
+- 0.2.7
+
+ - Update URLs
+
+- 0.2.6
+
+ - Fix warning about type parameter defaults (no functional change)
+
+- 0.2.5
+
+ - Add SubTopo, a topo walker for the subgraph reachable from a starting point.
+ - Add condensation, which forms the graph of a graph’s strongly connected
+ components.
+
+- 0.2.4
+
+ - Fix an algorithm error in scc (#61). This time we have a test that
+ crosschecks the result of the algorithm vs another implementation, for
+ greater confidence in its correctness.
+
+- 0.2.3
+
+ - Require Rust 1.6: Due to changes in how rust uses type parameter defaults.
+ - Implement Graph::clone_from.
+
+- 0.2.2
+
+ - Require Rust 1.5
+ - ``Dot`` passes on the alternate flag to node and edge label formatting
+ - Add ``Clone`` impl for some iterators
+ - Document edge iteration order for ``Graph::neighbors``
+ - Add *experimental feature* ``StableGraph``, using feature flag ``stable_graph``
+
+- 0.2.1
+
+ - Add algorithm ``is_isomorphic_matching``
+
+- 0.2.0
+
+ - New Features
+
+ - Add Graph::neighbors().detach() to step edges without borrowing.
+ This is more general than, and replaces now deprecated
+ walk_edges_directed. (#39)
+ - Implement Default for Graph, GraphMap
+ - Add method EdgeDirection::opposite()
+
+ - Breaking changes
+
+ - Graph::neighbors() for undirected graphs and Graph::neighbors_undirected
+ for any graph now visit self loop edges once, not twice. (#31)
+ - Renamed Graph::without_edges to Graph::externals
+ - Removed Graph::edges_both
+ - GraphMap::add_edge now returns ``Option<E>``
+ - Element type of ``GraphMap<N, E>::all_edges()`` changed to ``(N, N, &E)``
+
+ - Minor breaking changes
+
+ - IntoWeightedEdge changed a type parameter to associated type
+ - IndexType is now an unsafe trait
+ - Removed IndexType::{one, zero}, use method new instead.
+ - Removed MinScored
+ - Ptr moved to the graphmap module.
+ - Directed, Undirected are now void enums.
+ - Fields of graphmap::Edges are now private (#19)
+
+- 0.1.18
+
+ - Fix bug on calling GraphMap::add_edge with existing edge (#35)
+
+- 0.1.17
+
+ - Add Graph::capacity(), GraphMap::capacity()
+ - Fix bug in Graph::reverse()
+ - Graph and GraphMap have `quickcheck::Arbitrary` implementations,
+ if optional feature `check` is enabled.
+
+- 0.1.16
+
+ - Add Graph::node_indices(), Graph::edge_indices()
+ - Add Graph::retain_nodes(), Graph::retain_edges()
+ - Add Graph::extend_with_edges(), Graph::from_edges()
+ - Add functions petgraph::graph::{edge_index, node_index};
+ - Add GraphMap::extend(), GraphMap::from_edges()
+ - Add petgraph::dot::Dot for simple graphviz dot output
+
+- 0.1.15
+
+ - Add Graph::clear_edges()
+ - Add Graph::edge_endpoints()
+ - Add Graph::map() and Graph::filter_map()
+
+- 0.1.14
+
+ - Add new topological order visitor Topo
+ - New graph traits NeighborsDirected, Externals, Revisitable
+
+- 0.1.13
+
+ - Add iterator GraphMap::all_edges
+
+- 0.1.12
+
+ - Fix an algorithm error in scc (#14)
+
+- 0.1.11
+
+ - Update for well-formedness warnings (Rust RFC 1214), adding
+ new lifetime bounds on NeighborIter and Dfs, impact should be minimal.
+
+- 0.1.10
+
+ - Fix bug in WalkEdges::next_neighbor()
+
+- 0.1.9
+
+ - Fix Dfs/Bfs for a rustc bugfix that disallowed them
+ - Add method next_neighbor() to WalkEdges
+
+- 0.1.8
+
+ - Add Graph::walk_edges_directed()
+ - Add Graph::index_twice_mut()
+
+- 0.1.7
+
+ - Add Graph::edges_directed()
+
+- 0.1.6
+
+ - Add Graph::node_weights_mut and Graph::edge_weights_mut
+
+- 0.1.4
+
+ - Add back DfsIter, BfsIter
+
+License
+-------
+
+Dual-licensed to be compatible with the Rust project.
+
+Licensed under the Apache License, Version 2.0
+http://www.apache.org/licenses/LICENSE-2.0 or the MIT license
+http://opensource.org/licenses/MIT, at your
+option. This file may not be copied, modified, or distributed
+except according to those terms.
+
+