# metis-rs
**metis-rs** is a Rust library providing idiomatic bindings to [libmetis][METIS_GH], a library for graph and mesh
partitioning. It is made to be used with Rust version 1.67.0 or above.
## Getting Started
Library released on [crates.io](https://crates.io/crates/metis). To use it, add the following to your `Cargo.toml`:
```toml
[dependencies]
metis = "0.2"
```
The list of available versions and a change log are available in the [CHANGELOG.md](CHANGELOG.md) file.
## Features
### Use of Vendored Feature
The `vendored` feature enables metis-rs to build METIS from source and link to it statically. If not enabled, metis-rs
looks for an existing installation and links to it dynamically.
### Use of System-wide Feature
The `use-system` feature enables metis-rs to use the system-wide installation of METIS. If not enabled, metis-rs will
refer to its own version of METIS.
Please note, `vendored` and `use-system` features are mutually exclusive.
## Guidance for non-standard METIS installations
If you enabled the `use-system` feature and METIS is installed in a non-standard location, you must set the following
environment variables:
```bash
export METISDIR=path/to/your/metis/installation
export CPATH="$METISDIR/include"
export RUSTFLAGS="-L$METISDIR/lib"
```
`$METISDIR` must point to a directory containing both `lib/` and `include/` directories with METIS's shared libraries and headers, respectively.
## Building the documentation
To build the documentation, especially if METIS is installed in a non-standard location, set the `RUSTDOCFLAGS` environment variable:
```bash
export RUSTDOCFLAGS="-L$METISDIR/lib"
```
Then the following command will generate and open the documentation:
```bash
cargo doc --no-deps --open
```
## License
> [!IMPORTANT]
> Our licensing policy applies only to the rust crate `metis-rs`, not the original METIS library.
>
> For information about METIS' licensing policy, refer to the original library's [repository][METIS_GH].
metis-rs is distributed under the terms of both the MIT license and the Apache License (Version 2.0). Refer to `LICENSE-APACHE` and `LICENSE-MIT` for more details.
### Note on the `vendored` feature
metis-rs comes with its `vendored` feature enabled by default. With this feature enabled, the original METIS code is compiled and is installed along metis-rs.
Please note that METIS code is **always** under Apache-2 license.
[METIS]: http://glaros.dtc.umn.edu/gkhome/metis/metis/overview
[METIS_GH]: https://github.com/KarypisLab/METIS