ExpertiDict

Rust · Avançado · Inglês · Técnico

fat pointer

/fæt ˈpɔɪntɚ/substantivo

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 bits

Exemplos

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

Veja também

Todos os termos de Rust