5 个版本
使用旧的 Rust 2015
0.1.5 | 2018 年 4 月 15 日 |
---|---|
0.1.4 | 2018 年 4 月 7 日 |
0.1.3 | 2017 年 6 月 14 日 |
0.1.0 | 2017 年 5 月 17 日 |
#1508 在 算法 中
每月 22 次下载
68KB
1K SLoC
graphene
一个通用的、可扩展的 图论 数据类型和算法库,用于 Rust。
该项目仍处于早期设计和开发阶段,仍在不断变化。目前项目重点不是良好的公共 API,文档可能较少,也可能存在许多错误。
示例
#[macro_use]
extern crate graphene;
use graphene::core::*;
use graphene::core::constraint::*;
use graphene::common::AdjListGraph;
//!
custom_graph!{
// Name of the resulting graph type
struct MyGraph<V,W>
// The BaseGraph implementation to base the new graph on.
as AdjListGraph<V,W>
// The graph wrappers that will constrain the BaseGraph implementation so that
// it upholds the constraint traits.
use UniqueGraph,UndirectedGraph
// The constraint traits the new graph implements
impl Unique,Undirected
// The generic bounds
where V: Vertex, W: Weight
}
fn main(){
let mut g = MyGraph::graph(vec![1,2,3], vec![(1,2,1),(2,3,2),(3,1,3)]).unwrap();
assert_eq!(g.edges_between(1,2).len(), 2);
// Cannot add an edge that is already there because the graph
// is declared as Unique, meaning no two edges may be incident
// on the same vertices and have the weight.
assert!(g.add_edge(BaseEdge::new(1,2,1)).is_err());
assert_eq!(g.edges_between(1,2).len(), 2);
}
许可证
许可协议为 MIT 许可证。
任何带有自己许可证头部的文件也按照上述许可证许可,任选其一。如果头部指定了与上述不同的许可证,则视为附加选择,可以选择上述许可证或头部许可证。
对仓库的任何有意贡献都按照上述许可证许可,并且不排除特定贡献的许可证。