Se você tentar usar um enum
em uma extern
declaração de função C, receberá um aviso:
enum
tipo encontrado sem anotação de representação segura de função estrangeira em módulo estrangeiro, ativado#[warn(ctypes)]
por padrão
O que Rust está tentando dizer é que C e Rust podem usar tamanhos inteiros diferentes para o enum
, então você precisa dizer a Rust para usar o mesmo tamanho que C. Você faz isso com #[repr(C)]
anotação:
#[repr(C)]
enum Foo {
BAR, BAZ, QUZ,
}