11个版本

0.2.1 2022年3月14日
0.2.0 2022年3月2日
0.1.8 2021年12月30日
0.1.4 2021年11月25日
0.1.0 2021年10月30日

#11 in #graph-theory

每月34次下载

Apache-2.0 OR MIT

315KB
5.5K SLoC

GRATHE

Crates.io build codecov Crates.io Crates.io

一个GRAph THEory库的Rust实现。

描述

Grathe是一个图论库,它提供了一种连贯的编程体验。其主要目标是减少将理论方面转换为实际计算的努力。

如何使用

以下是一个简短的示例

use anyhow::Result; // Catch any error.
use grathe::prelude::*; // Frequently used items.

fn main() -> Result<()> {
    // Define an (undirected) graph given its edges.
    let G = Graph::from_edges([
        (0, 1), (1, 2), (3, 4)
    ]);
    
    // Iterate over the vertex set.
    for &x in V!(G) {
        assert!(G.has_vertex(&x));
    }

    // Iterate over the neighbors of `1`.
    for x in Ne!(G, &1) {
        assert!(G.has_edge(x, &1)?);
    }

    // Define a graph with labels, equivalent to Graph::<String>.
    let mut G = Graphl::null();

    // Add a vertex to the graph.
    let x = G.add_vertex("A")?;
    assert!(G.has_vertex(&x));

    // Handle errors in a Rust-compatible way.
    assert!(
        match G.add_vertex(x) {
            Err(_) => true, // Error! Vertex already defined!
            Ok(_) => false, // Ok! Vertex added successfully!
        }
    );

    // Exit with no error.
    Ok(())
}

如何安装

grathe 作为依赖项添加到 Cargo.toml 中。

如何测试

需要 openblas 库。克隆仓库,并在其中运行以下命令。

Linux

sudo apt-get install libopenblas-dev

MacOS

brew install openblas

Windows

cargo install cargo-vcpkg
cargo vcpkg -v build
cp target/vcpkg/installed/x64-windows/lib/libopenblas.lib target/vcpkg/installed/x64-windows/lib/openblas.lib

最后,像往常一样运行测试

cargo test

参考资料

此仓库基于以下文献

许可证

Grathe根据Apache许可证版本2或MIT许可证双许可,以与Rust项目兼容。

依赖项

~68MB
~1M SLoC