This crate implements several pathfinding and flow algorithms in Rust
Those algorithms are generic over their arguments.
In your Cargo.toml
, put:
ini
[dependencies]
pathfinding = "0.1"
Or if you don't need the Edmonds-Karp algorithm you can specify this by removing default features:
``` ini [dependencies]
pathfinding = { version = "0.1", 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.