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算法 类别中

Download history 10284/week @ 2024-05-02 10466/week @ 2024-05-09 9391/week @ 2024-05-16 9011/week @ 2024-05-23 13241/week @ 2024-05-30 10055/week @ 2024-06-06 11102/week @ 2024-06-13 10316/week @ 2024-06-20 9172/week @ 2024-06-27 10400/week @ 2024-07-04 8973/week @ 2024-07-11 8570/week @ 2024-07-18 8841/week @ 2024-07-25 8668/week @ 2024-08-01 7826/week @ 2024-08-08 6513/week @ 2024-08-15

每月 32,923 次下载
37 包(29 个直接使用)中使用

Apache-2.0/MIT

185KB
3.5K SLoC

pathfinding

Current Version Documentation License: Apache-2.0/MIT

此包在 [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 clippypre-commit 检查。这些将在您提交拉取请求时自动运行。您可以通过运行以下命令将 pre-commit 安装到已签出的存储库版本中:

$ pre-commit install --hook-type commit-msg

此存储库使用 常规提交 提交消息风格,例如

  • feat(matrix): 添加 Matrix::transpose()
  • fix(tests): 删除未使用的导入

如果拉取请求应自动关闭一个开放的问题,请在拉取请求封面信中包含“修复#xxx#”或“关闭#xxx”。

依赖项

~1.2–2MB
~36K SLoC