C Strings, Memory Ownership, and Error Returns
In FFI, extern "C" is only the entry point.
The most fragile parts are usually:
whether a C string is a valid NUL-terminated string
who allocates returned pointers, who frees them, and which function frees them
whether errors cross the boundary as integer codes, output parameters, or text
C code handles these through API documentation and discipline. Rust can put some rules into types, but the language boundary still needs an explicit contract.
Read More