【发布时间】:2018-08-29 18:27:19
【问题描述】:
Rust 具有代表非NULL 指针的ptr::NonNull 类型。在 FFI 中使用这种类型是否安全?
是否保证具有相同的二进制表示(忽略非 FFI 上下文,例如 Option 优化)、对齐、寄存器用法为 *mut T?
例如,我可以实现这个接口吗:
void call_me_from_c(char *without_nulls) __attribute__((nonnull));
与
extern "C" fn call_me_from_c(without_nulls: ptr::NonNull<c_char>)
我不希望这做任何事情(除了在与NULL 一起使用时导致UB ;),但我希望界面记录该函数需要非NULL论据。
【问题讨论】:
标签: rust ffi abi non-nullable