Expand description
C2Rust transpiled header contents (static inline functions
Types in here are distinct from those created in the main module (using bindgen); unifying those will be part of bindgen’s #1334, but it’s a long way there.
Use these functions through the re-export in the main module, for the C headers may flip-flop between static inline and linked.
Some special treatment has been applied in the course of the transpilation process:
- All functions were made
pub
- All functions have their
extern "C"
removed. Any C component would already use it via their original definitions, there is no need to re-export them or to restrain their ABI (as they are here for efficient inlining into Rust code only). - For C const initializers (eg.
#define MUTEX_INIT { { NULL } }
), there is no way for a transpiler to recognize which type this is actually for. That information is tracked manually inbuild.rs
as a list of known initializers. They get turned into const functions in the style offn init_MUTEX_INIT() -> mutex_t
.