I basically agree. However there seems to be a bug that prevents compilation if the ABI is omitted in the function parameter (regster_callback:cb).
Then the compiler will output:
error: mismatched types: expected `fn(i32)` but found `extern "C" extern fn(i32)` (expected "Rust" fn but found "C" fn)

Therefore I decided to go the verbose way.