This crate implements several pathfinding, flow, and graph algorithms in Rust
Those algorithms are generic over their arguments.
In your Cargo.toml
, put:
ini
[dependencies]
pathfinding = "0.2"
Or if you don't need the Edmonds-Karp or the Kuhn-Munkres algorithms you can specify this by disabling the default
features. This prevents dragging in the ndarray
dependency which takes a long time to compile.
ini
[dependencies]
pathfinding = { version = "0.2", default-features = false }
You can then pull your preferred algorithm (BFS in this example) using:
``` rust extern crate pathfinding;
use pathfinding::bfs; ```
We will search the shortest path on a chess board to go from (1, 1) to (4, 6) doing only knight moves.
``` rust use pathfinding::bfs;
struct Pos(i32, i32);
impl Pos {
fn neighbours(&self) -> Vec
static GOAL: Pos = Pos(4, 6); let result = bfs(&Pos(1, 1), |p| p.neighbours(), |p| *p == GOAL); assert_eq!(result.expect("no path found").len(), 5); ```
This code is released under a dual Apache 2.0 / MIT free software license.