Coin CBC Rust bindings
Rust bindings to the CoinOR CBC MILP Solver using the C API.
Tested on Debian 10, AMD64, coinor-libcbc3 2.9.9+repack1-1.
For more details on installing the libCbc dependencies, see below.
coin_cbc_sys
This crate exposes raw bindings to the C functions.
coin_cbc
This crate exposes safe rust bindings using coin_cbc_sys.
coin_cbc::raw::Model exposes direct translation of the C function with assert to guaranty safe use.
coin_cbc::Model exposes a more user friendly, rustic and efficient API: it was used successfully to solve MILP with 250,000 binary variables with unnoticeable overhead.
Examples
See the examples directory.
Prerequisites: installing Cbc library files
The library files of the COIN-OR Solver Cbc need to present on your system when compiling a project that depends on coin_cbc.
On a Debian system with a user with admin rights, this is easily achieved with:
sudo apt install coinor-libcbc-dev
For other systems, without admin rights or if you need a newer version of Cbc (e.g. with bug fixes), you can install Cbc through coinbrew:
https://coin-or.github.io/user_introduction#building-from-source
You will then have to either:
- register the resulting library files with your system, or
- provide
cargowith the location of that library. For the first option,coinbrewprovides a command suggestion after successful compilation. The second option can e.g. be done via:
RUSTFLAGS='-L /path/to/your/cbc/install/lib' cargo test
License
This project is distributed under the MIT License by Kardinal.