Use cargo add precice to install the rust language bindings from crate.io
The versioning scheme
The versioning scheme of the rust bindings consists of the first two parts of the preCICE version and the additional version of the rust bindings.
Examples:
- version
1
of the rust bindings for preCICE version2.5
is2.5.1
- version
2.5.0
of the rust bindings are compatible will all bugfix releases of2.5
.
Prerequisites
Install cargo
, pkg-config
and preCICE.
The rust bindings rely on pkg-config
to locate preCICE.
Installation
The rust bindings for preCICE are published on crates.io with the package precice
.
You can install the bindings directly from crates.io:
cargo add precice@2.5
Alternatively, you can install the bindings from the git repository:
cargo add --git https://github.com/precice/rust-bindings.git --rev v2.5.0 precice
Usage
The usage of the rust language bindings for preCICE is very similar to the C++ API. Therefore, please refer to our section on coupling your code for getting started. Some important differences:
- Use
precice::new()
to create a newSolverInterface
. - All calls that require mutable access to the
SolverInterface
need to pin it in memory first usingpin_mut()
. - Action constants are directly exposed via the
precice
module. - Sizes are inferred from passed slices
// Create a mutable interface
let mut interface = precice::new("Solver", "config.xml", 0, 1);
// Call a const method
let mesh_id = interface.get_mesh_id("Mesh");
// Call a non-const method via pin_mut()
let vid = interface.pin_mut().set_mesh_vertex(mesh_id, &[1.0, 2.0, 3.0]);