FFI: Letting C Call Rust
Letting C call Rust does not mean exposing ordinary Rust functions directly to C.
C understands C ABI: symbol names, calling conventions, integers, pointers, struct layout, memory ownership, release functions, and error returns. Rust internals such as String, Vec, Result, traits, and panic should not cross the C boundary directly.
A stable model is:
C call
-> extern "C" wrapper
-> validate pointer and length
-> convert to safe Rust types
-> call internal Rust logic
-> convert result to C-compatible return values
This article covers C calling Rust. Rust calling C comes next.
Read More