Rust · Avançado · Inglês · Técnico
repr C
Atributo #[repr(C)] que fixa o layout de uma struct ou enum como no C: campos na ordem declarada, com padding previsível. Necessário para trocar dados com código C.
Onde usar
Aparece em FFI, em formatos binários e em acesso a hardware. Sem ele, o Rust pode reordenar os campos para economizar espaço.
Em código
#[repr(C)]
struct Cabecalho {
tipo: u8,
tamanho: u32,
}
use std::mem::size_of;
println!("{}", size_of::<Cabecalho>());
// 8: u8 + 3 de padding + u32Exemplos
Mark it repr C before passing it to the C library.
Marque com repr C antes de passar para a biblioteca em C.
Without repr C the field order isn't guaranteed.
Sem repr C a ordem dos campos não é garantida.
Cuidado
repr(C) só fixa ordem e alinhamento; não elimina o padding nem torna a struct automaticamente serializável.
Sinônimos
#[repr(C)]