13个不稳定版本

0.8.0 2023年10月20日
0.7.2 2021年8月27日
0.6.0 2020年1月3日
0.5.0 2019年11月4日
0.1.0 2017年5月4日

#131 in 算法

每月25次下载
用于 3 个crate(2个直接使用)

MIT 许可证

375KB
7.5K SLoC

clingo-rs 构建状态 最新版本 Rust文档

Rust风格的clingo库绑定。Clingo版本5.6.2。

使用方法

默认 - 动态链接

默认情况下,该crate通过动态链接使用clingo库。假设系统上已安装clingo动态库。在编译时,必须设置环境变量 CLINGO_LIBRARY_PATH。例如

export CLINGO_LIBRARY_PATH=/scratch/miniconda3/envs/test/lib

对于运行与clingo动态链接的代码,请确保在您的 LD_LIBRARY_PATH 中有clingo库。

请参阅[clingo Readme](https://github.com/potassco/clingo#readme)了解获取clingo二进制发行版的不同方法。

使用static-linking

您还可以通过静态链接使用clingo库。构建系统将尝试在您的系统上为静态链接编译clingo。要为静态链接构建clingo,您需要安装以下工具

  • 一个符合C++14的编译器
    • 至少 GCC 版本 4.9
    • Clang 版本 3.1(使用gcc 4.9提供的libstdc++或libc++)
    • 至少 MSVC 15.0 (Visual Studio 2017)
    • 其他编译器可能也可以工作
  • cmake 构建系统
    • 建议至少使用版本 3.18
    • 至少需要版本 3.1

使用可选的静态链接支持的建议方法如下。

[dependencies]
clingo = { version = "0.8.0", features = ["static-linking"] }

使用derive

该crate提供了一个derive宏,以帮助简化将rust数据类型用作事实的使用。

在您的 Cargo.toml 中添加

[dependencies]
clingo = { version = "0.8.0", features = ["derive"] }

在您的源代码中编写

use clingo::{ClingoError, FactBase, Symbol, ToSymbol};

#[derive(ToSymbol)]
struct MyPoint {
    x: i32,
    y: i32,
}

let p = MyPoint { x: 4, y: 2 };
let mut fb = FactBase::new();
fb.insert(&p);

该宏执行蛇形命名的转换。这意味着对于 MyPoint{x:4,y:2} 的对应事实是 my_point(4,2)

示例

cargo run --example=ast 0
cargo run --example=backend 0
cargo run --example=configuration
cargo run --example=control 0
cargo run --example=model 0
cargo run --example=propagator 0
cargo run --example=solve-async 0
cargo run --example=statistics 0
cargo run --example=symbol 0
cargo run --example=symbolic-atoms 0
cargo run --example=theory-atoms 0
cargo run --example=inject-terms 0
cargo run --example=version

贡献

如何为 clingo-rs 做贡献?

任何有意提交并由您包含在作品中的贡献,应按照 MIT 许可证的条款许可,不得附加任何额外条款或条件。

依赖项

~12MB
~249K SLoC