An ABI declaration is a promise
Rust 2024 requires external blocks to be declared `unsafe extern` because their signatures cannot be checked against the foreign implementation. Shared structs need an agreed representation such as `#[repr(C)]`; Rust references, String and Vec are not generic C ABI data types.