Rust · Avançado · Inglês · Técnico
Sized
Trait automático para tipos cujo tamanho é conhecido na compilação. Todo parâmetro genérico é Sized por padrão; para aceitar str, slices ou dyn use T: ?Sized.
Onde usar
Aparece em erros como 'the size for values of type str cannot be known' e em assinaturas com ?Sized, como as de Box<T> e &T.
Em código
fn a<T>(_x: T) {} // T: Sized implícito
fn b<T: ?Sized>(_x: &T) {}
b("texto"); // T = str
b(&[1, 2][..]); // T = [i32]Exemplos
You need T: ?Sized to accept a str here.
Você precisa de T: ?Sized para aceitar um str aqui.
Slices are not Sized, only references to them are.
Slices não são Sized, só as referências a eles.
Cuidado
O ?Sized não é um trait: é a permissão de retirar o limite Sized implícito.