如何获得 FFI 的机器大小的整数?

How do I get machine-sized integer for FFI?

在处理外部代码时,我必须使用指向 C 结构的指针

typedef struct {
  int two;  
  int nd;
  char typekind; 
  ...           
} PyArrayInterface;

显然 int 的大小未知。我如何用 Rust 表示这个结构?可能是 i32,但有一天我可能 运行 跨 ILP64 数据模型...

此时我唯一的想法是创建一个枚举来包装结构,在 运行 时检查架构,然后做正确的事情。每次我需要从 C 中获取结构时,都有一个 if 语句和一个 transmute 是相当愚蠢的,但我目前没有更好的东西......

要处理 FFI 类型,您应该使用 libc crate. You can find it's documentation here

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

Rust 书中的

This chapter 给出了简洁的介绍,还提到了 c_int.