2个不稳定版本
0.2.0 | 2021年11月3日 |
---|---|
0.1.0 | 2021年10月28日 |
#2447 在 数据结构 中
34KB
673 行
辰砂
辰砂是一个纯Rust库,包含图算法和数据结构。它旨在快速且易于使用。其定义特性是将众多与图相关的功能分解为几个简单的特性。无需从头开始为特定情况重新发明算法。实现几个特性后,您就能利用图和网络理论的力量。
快速开始
将辰砂添加到项目的依赖项部分。
[dependencies]
cinnabar = "*"
为了简化开发,您可以使用库提供的预制图之一。
use cinnabar::prelude::*;
use cinnabar::graphs::Grid;
use cinnabar::graphs::grid::Coords;
use std::collections::HashMap;
// Associated each vertexl in a grid with Manhattan distance to it.
let mut weights = HashMap::new();
let grid = Grid::with_inspector(2, 3, |id: Counter, row, col| {
weights.insert(id, row + col);
});
// Traverse vertices by grid rows
for id in grid.traverse_by_rows() {
let Coords(row, col) = grid.coords_of(id).unwrap();
let weight = weights.get(&id).unwrap();
println!("The weight of a vertex at {}, {} is {}", row, col, weight);
}
特性
以下是库提供的特性简要列表。此列表并不完整,请参阅crate文档以获取详细信息。
预制图
- 网格
- 基于邻接表的图
- 基于关联矩阵的图
遍历
- DFS
- BFS
搜索
- 基于DFS
- 基于BFS
- Dijkstra
- A*算法
支持的Rust版本
辰砂需要Rust的两种特性,目前这些特性仅存在于nightly构建中
这两个提议进展迅速,即将稳定。可以在不使用它们的情况下实现库,但目前更专注于功能而不是实现。如果社区有足够的兴趣让这个库在稳定Rust中工作,并且上述特性尚未在稳定Rust中,则可能会发生变化。
许可
本项目采用MIT许可。
依赖项
~425KB