Rust adoption happens through FFI: rustls replacing OpenSSL callers, librsvg inside GNOME, and Firefox's Stylo all interoperate with C through exactly the extern and #[repr(C)] machinery you use here. bindgen automates it at scale, but debugging FFI requires understanding the raw contract.