Rust · Avançado · Inglês · Técnico
fat pointer
Ponteiro de duas palavras: o endereço e um metadado extra, como o tamanho de uma fatia ou a tabela de métodos de um trait object.
Onde usar
Explica por que &[T] e &dyn Trait têm 16 bytes em 64 bits, o dobro de &T. Importa em FFI e em cálculos de layout.
Em código
use std::mem::size_of;
use std::fmt::Debug;
println!("{}", size_of::<&u8>());
println!("{}", size_of::<&[u8]>());
println!("{}", size_of::<&dyn Debug>());
// 8, 16, 16 em 64 bitsExemplos
A slice reference is a fat pointer.
Uma referência a slice é um fat pointer.
The vtable pointer makes dyn references fat.
O ponteiro da vtable faz as referências dyn serem fat.
Cuidado
Ponteiros para tipos de tamanho conhecido continuam com uma palavra só; o fat pointer aparece apenas para tipos sem tamanho fixo, como slices e dyn.
Sinônimos
ponteiro gordo
Antônimos
ponteiro fino