Int 如何为FFI获取机器大小的整数?

Int 如何为FFI获取机器大小的整数?,int,rust,ffi,Int,Rust,Ffi,在处理外来代码时,我必须使用指向以下形式的C结构的指针 typedef struct { int two; int nd; char typekind; ... } PyArrayInterface; 显然,int的大小是未知的。如何用rust表示此结构?它可能是i32,但有一天我可能会遇到ILP64数据模型 在这一点上,我唯一的想法是创建一个枚举来包装结构,在运行时检查架构,然后做正确的事情。每次我需要从C获取结构时,都会有一个if语句和一个tra

在处理外来代码时,我必须使用指向以下形式的C结构的指针

typedef struct {
  int two;  
  int nd;
  char typekind; 
  ...           
} PyArrayInterface;
显然,
int
的大小是未知的。如何用rust表示此结构?它可能是i32,但有一天我可能会遇到ILP64数据模型


在这一点上,我唯一的想法是创建一个枚举来包装结构,在运行时检查架构,然后做正确的事情。每次我需要从C获取结构时,都会有一个
if
语句和一个
transmute
,这是非常愚蠢的,但目前我没有更好的方法…

要处理FFI类型,你应该使用板条箱。你可以找到它的文档

您需要的两种类型是
libc::c_int
libc::c_char


《铁锈》一书中给出了一个简洁的介绍,还提到了
c_int

2:或者使用
libc::c_char
让图书馆决定。请不要经常以改变意思的方式编辑你的文章,对于第二个问题,请打开一个新的问题线程。让我们保持这样的问题原子:)我的坏:)。我必须更加严格地等待更长的时间,然后才能发布。。。我删除了第二个问题。