Name: pathfinding
Owner: Software Development Team
Description: Pathfinding library for rust
Forked from: samueltardieu/pathfinding
Created: 2017-11-09 17:58:01.0
Updated: 2017-11-09 17:58:03.0
Pushed: 2017-11-10 00:09:46.0
Homepage: null
Size: 119
Language: Rust
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This crate implements several pathfinding, flow, and graph algorithms in Rust
Those algorithms are generic over their arguments.
In your Cargo.toml
, put:
endencies]
finding = "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.
endencies]
finding = { version = "0.2", default-features = false }
You can then pull your preferred algorithm (BFS in this example) using:
rn crate pathfinding;
pathfinding::bfs;
We will search the shortest path on a chess board to go from (1, 1) to (4, 6) doing only knight moves.
pathfinding::bfs;
rive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
ct Pos(i32, i32);
Pos {
neighbours(&self) -> Vec<Pos> {
let &Pos(x, y) = self;
vec![Pos(x+1,y+2), Pos(x+1,y-2), Pos(x-1,y+2), Pos(x-1,y-2),
Pos(x+2,y+1), Pos(x+2,y-1), Pos(x-2,y+1), Pos(x-2,y-1)]
ic GOAL: Pos = Pos(4, 6);
result = bfs(&Pos(1, 1), |p| p.neighbours(), |p| *p == GOAL);
rt_eq!(result.expect("no path found").len(), 5);
This code is released under a dual Apache 2.0 / MIT free software license.