@varsock rust has very good code generation for C (and sometimes C++ as well) headers via bindgen (https://github.com/rust-lang/rust-bindgen). This allows you to potentially make minimal changes to the code without having to refactor to use a new protocol on the legacy side, and has faster performance (benchmark to confirm), since there’s no serialization/deserialization step. See https://doc.rust-lang.org/nomicon/ffi.html for how this is done manually.
@darkregn Checkout @jonhoo’s channel. He has many videos doing deep dives into how rust works, and several case studies of existing crates and how they work. They are excellent resources for learning rust.