FFI: Letting Rust Call C
Calling C from Rust can look like just writing an extern "C" declaration.
The real issue is different: a C function does not carry Rust’s borrowing, lifetime, Result, or destructor rules. Rust can call it, but the compiler cannot prove that the call satisfies the C API contract.
A better model is:
safe Rust API
-> validate and prepare arguments
-> call C inside a small unsafe block
-> convert error codes, output parameters, and raw pointers back to Rust types
The previous article covered C calling Rust. This one covers the other direction: Rust calling C.
Read More