125 个版本 (70 个稳定版)
4.10.0 | 2024年6月18日 |
---|---|
4.9.1 | 2024年2月12日 |
4.8.2 | 2024年1月14日 |
4.8.0 | 2023年12月22日 |
0.1.5 | 2016年12月30日 |
#21 在 算法 类别中
每月 32,923 次下载
在 37 个 包(29 个直接使用)中使用
185KB
3.5K SLoC
pathfinding
此包在 [Rust][Rust] 中实现了多个寻路、流和图算法。算法对其参数是通用的。有关各种算法的更多信息,请参阅文档。
使用此包
在您的 Cargo.toml
中,添加以下内容
[dependencies]
pathfinding = "4.10.0"
然后,您可以使用以下方法拉取您首选的算法(此例中为 BFS):
use pathfinding::prelude::bfs;
示例
我们将搜索棋盘上从 (1, 1) 到 (4, 6) 的最短路径,只进行骑士步法。
use pathfinding::prelude::bfs;
#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
struct Pos(i32, i32);
impl Pos {
fn successors(&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)]
}
}
static GOAL: Pos = Pos(4, 6);
let result = bfs(&Pos(1, 1), |p| p.successors(), |p| *p == GOAL);
assert_eq!(result.expect("no path found").len(), 5);
许可证
此代码在 Apache 2.0 / MIT 免费软件许可证下发布。
贡献
欢迎您通过打开 问题 或提交 拉取请求 来贡献。在实现新功能之前,请先打开一个问题,以防它已经在进行中或适合此存储库。
为了通过持续集成测试,您的代码必须使用最新的 rustfmt
和夜间 Rust 工具链进行格式化,并且通过 cargo clippy
和 pre-commit
检查。这些将在您提交拉取请求时自动运行。您可以通过运行以下命令将 pre-commit
安装到已签出的存储库版本中:
$ pre-commit install --hook-type commit-msg
此存储库使用 常规提交 提交消息风格,例如
- feat(matrix): 添加
Matrix::transpose()
- fix(tests): 删除未使用的导入
如果拉取请求应自动关闭一个开放的问题,请在拉取请求封面信中包含“修复#xxx#”或“关闭#xxx”。
依赖项
~1.2–2MB
~36K SLoC