Как я могу получить целое число размером с машину для FFI?

Имея дело с иностранным кодом, я должен взять указатели на структуру C вида

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

Очевидно размер int неизвестно Как мне представить эту структуру в ржавчине? Это, вероятно i32, но я мог бы столкнуться с моделью данных ILP64 однажды...

На данный момент моя единственная идея - создать перечисление, чтобы обернуть структуру, проверить архитектуру во время выполнения и сделать все правильно. Это довольно глупо иметь if заявление и transmute каждый раз, когда мне нужно получить структуру из C, но сейчас у меня нет ничего лучше...

1 ответ

Решение

Для обработки типов FFI вы должны использовать libc обрешетка. Вы можете найти документацию здесь.

Два типа вам нужны libc::c_int а также libc::c_char,

Эта глава из книги Rust дает аккуратное введение, а также упоминает c_int,

Другие вопросы по тегам