This project is to create a bridge between the Eigen C++ Matrix Library and Rust, specifically to be used with the cxx and autocxx crates for Rust and C++ FFI.

Ideally the end product would be an intuitive and complete wrapper for Eigen that brings all of its capabilities to Rust, but the main goal is to be able to pass dense and sparse matrixs between C++ and Rust.
The matrix's will be represented as Rust arrays/slices, nalgebra matrix, ndarray matrix, and compatibility with cxx.
The wrapper should be some what automated for maintenance and handling the nature of Eigen's heavy use of templates.
The crate will also handle building and integrating Eigen into the rust build system, and should work on Windows, Linux, Mac, and ARM SBC.

The final result will be posted as an open source crate.

The basic idea is to use the Map data type from Eigen to get a C array like object, but work will need to be done to figure out how to minimize copying and heap allocations.
Looking for someone who has a strong understanding of C++ ABI and Rust FFI to not only figure out how to make these two talk, but also integrate it into FFI tools like cxx and autocxx.

Examples and References:
Stack Overflow: https://stackoverflow.com/questions/61513304/how-to-convert-from-nalgebramatrix-to-eigenmatrixxf-correctly
Eigen Map Type: https://eigen.tuxfamily.org/dox/group__TutorialMapClass.html
Rust OpenCV Matrix Crate: https://github.com/jerry73204/rust-cv-convert
Rust cxx: https://github.com/dtolnay/cxx


Budget: $2,000
Posted On: March 29, 2023 04:14 UTC
Category: Back-End Development
Skills:C++, C, Rust, Microsoft Visual C++, API
Country: United States
click to apply