Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/potassco/clingo-rs
🗝️ Rust bindings to the clingo library
https://github.com/potassco/clingo-rs
clingo rust-bindings
Last synced: 3 months ago
JSON representation
🗝️ Rust bindings to the clingo library
- Host: GitHub
- URL: https://github.com/potassco/clingo-rs
- Owner: potassco
- License: mit
- Created: 2016-10-06T08:37:46.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-01-08T08:34:37.000Z (10 months ago)
- Last Synced: 2024-07-03T23:33:37.699Z (4 months ago)
- Topics: clingo, rust-bindings
- Language: Rust
- Homepage:
- Size: 1.38 MB
- Stars: 29
- Watchers: 5
- Forks: 9
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-rust-formalized-reasoning - clingo-rs - derive)[:package:](https://crates.io/crates/clingo-sys):star: - idiomatic bindings to the [clingo](https://github.com/potassco/clingo) library. (Projects / Libraries)
README
# clingo-rs [![Build Status](https://github.com/potassco/clingo-rs/actions/workflows/test-ci.yml/badge.svg)](https://github.com/potassco/clingo-rs/actions/workflows/test-ci.yml) [![Latest Version](https://img.shields.io/crates/v/clingo.svg)](https://crates.io/crates/clingo) [![Rust Documentation](https://docs.rs/clingo/badge.svg)](https://docs.rs/clingo)
Rust idiomatic bindings to the [clingo](https://github.com/potassco/clingo) library.
Clingo version 5.6.2.## Usage
### Default - dynamic linking
Per default the crate uses the clingo library via dynamic linking.
It is assumed that a clingo dynamic library is installed on the system.
While compile time the environment variable `CLINGO_LIBRARY_PATH` must be set. For example:```sh
export CLINGO_LIBRARY_PATH=/scratch/miniconda3/envs/test/lib
```And for running the code that dynamically links to clingo make sure to have the clingo library in your `LD_LIBRARY_PATH`.
Have a look a at the [clingo Readme](https://github.com/potassco/clingo#readme) for different ways of obtaining the binary releases of clingo.
### Using `static-linking`
You can also use the clingo library via static linking.
The build system will attempt to compile clingo for static linking on your system.
To build clingo for static linking you need the following tools installed:- a C++14 conforming compiler
- *at least* [GCC](https://gcc.gnu.org/) version 4.9
- [Clang](http://clang.llvm.org/) version 3.1 (using either libstdc++
provided by gcc 4.9 or libc++)
- *at least* MSVC 15.0 ([Visual Studio](https://www.visualstudio.com/) 2017)
- other compilers might work
- the [cmake](https://www.cmake.org/) build system
- at least version 3.18 is recommended
- at least version 3.1 is *required*The recommended way to use the optional static linking support is as
follows.```toml
[dependencies]
clingo = { version = "0.8.0", features = ["static-linking"] }
```### Using `derive` macro
The crate provides a derive macro to help ease the use of rust data types as facts.
In your `Cargo.toml` add:
```toml
[dependencies]
clingo = { version = "0.8.0", features = ["derive"] }
```In your source write:
```ignore
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);
```The macro performs a conversion to snake case. This means the corresponding fact for `MyPoint{x:4,y:2}` is `my_point(4,2)`.
## Examples
```sh
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
```## Contribution
[How to make a contribution to `clingo-rs`?](https://github.com/potassco/clingo-rs/blob/master/CONTRIBUTING.md)
Any contribution intentionally submitted for inclusion in the work by you, shall be licensed under the terms of the MIT license without any additional terms or conditions.