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:
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 comocollect<B>() -> B
pode retornar qualquer tipo que satisfaçaB
, e o chamador pode precisar escolher um, como comlet 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.