Traits Genéricos

Traits também podem ser genéricos, assim como tipos e funçÔes. Os parùmetros de um trait recebem tipos concretos quando ele é usado.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

  • O trait From serĂĄ abordado mais tarde no curso, mas sua definição na documentação std Ă© simples.

  • As implementaçÔes do trait nĂŁo precisam cobrir todos os possĂ­veis parĂąmetros de tipo. Aqui, Foo::from("hello") nĂŁo seria compilado porque nĂŁo hĂĄ implementação From<&str> para Foo.

  • Os traits genĂ©ricos recebem tipos como "entrada", enquanto os tipos associados sĂŁo uma espĂ©cie de tipo de "saĂ­da". Um trait pode ter vĂĄrias implementaçÔes para diferentes tipos de entrada.

  • Na verdade, o Rust exige que no mĂĄximo uma implementação de um trait corresponda a qualquer tipo T. Ao contrĂĄrio de algumas outras linguagens, o Rust nĂŁo tem uma heurĂ­stica para escolher a correspondĂȘncia "mais especĂ­fica". HĂĄ trabalho em adicionar esse suporte, chamado especialização.