我有一些带有结构指针参数的c函数。
extern "C" {
fn InitSomeStruct() -> *SomeStruct;
fn SomeFunction(v: *SomeStruct);
fn DestroySomeStruct(v: *SomeStruct);
}
fn main() {
unsafe {
let s = InitSomeStruct();
SomeFunction(s);
DestroySomeStruct(s);
}
}
SomeStruct的实现是未知的。
如何从 rust 代码中声明和使用诸如SomeStruct之类的外部结构?
最佳答案
约定是对不透明的FFI类型使用一个空的枚举,即:
enum SomeStruct {}
有时也使用诸如
struct SomeStruct;
这样的空结构。