pathfinding
This crate implements several pathfinding algorithms in Rust:
- A*: find the shortest path in a weighted graph using an heuristic to guide the process.
- breadth-first search (BFS): explore nearest neighbours first, then widen the search.
- depth-first search (DFS): explore a graph by going as far as possible, then backtrack.
- Dijkstra: find the shortest path in a weighted graph.
- Fringe: find the shortest path in a weighted graph using an heuristic to guide the process.
Those algorithms are generic over their arguments.
Using this crate
In your Cargo.toml
, put:
[dependencies]
pathfinding = "0.1"
You can then pull your preferred algorithm (BFS in this example) using:
extern crate pathfinding;
use bfs;;
Example
We will search the shortest path on a chess board to go from (1, 1) to (4, 6) doing only knight moves.
The first version uses an explicit type Pos
on which the required traits are derived.
use bfs;
;
static GOAL: Pos = Pos;
let result = bfs;
assert_eq!;
The second version does not declare a Pos
type, makes use of more closures,
and is thus shorter.
use bfs;
static GOAL: = ;
let result = bfs;
assert_eq!;
License
This code is released under a dual Apache 2.0 / MIT free software license.