impl Trait

Semelhante aos limites de trait, a sintaxe do trait impl pode ser usada em argumentos de funçÔes e em valores de retorno:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

This slide should take about 5 minutes.

O impl Trait permite que vocĂȘ trabalhe com tipos que vocĂȘ nĂŁo pode nomear. O significado de impl Trait Ă© um pouco diferente nas diferentes posiçÔes.

  • Como parĂąmetro, o trait impl Ă© como um parĂąmetro genĂ©rico anĂŽnimo com um limitador de caracterĂ­sticas (trait).

  • Como tipo de retorno, significa que o tipo de retorno Ă© algum tipo concreto que implementa o trait, sem nomear o tipo. Isso pode ser Ăștil quando vocĂȘ nĂŁo deseja expor o tipo concreto em uma API pĂșblica.

    A inferĂȘncia Ă© difĂ­cil na posição de retorno. Uma função que retorna impl Foo escolhe o tipo concreto que retorna, sem escrevĂȘ-lo na fonte. Uma função que retorna um tipo genĂ©rico como collect<B>() -> B pode retornar qualquer tipo que satisfaça B, e o chamador pode precisar escolher um, como com let x: Vec<_> = foo.collect() ou com o turbofish, foo.collect::<Vec<_>>().

Qual Ă© o tipo de debuggable? Tente let debuggable: () = .. para ver o que a mensagem de erro mostra.