How we wrap external C and C++ libraries in Rust