Trait Bounds (Limites de Trait)
Ao trabalhar com genĂ©ricos, muitas vezes vocĂȘ exigir que os tipos implementem algum trait
para poder utilizar os métodos do trait
.
VocĂȘ consegue fazer isso com T:Trait
ou impl Trait
:
Speaker Notes
This slide should take about 8 minutes.
-
Tente criar um
NonClonable
e passĂĄ-lo paraduplicate
. -
Quando vĂĄrios traits sĂŁo necessĂĄrios, use
+
para uni-los. -
Mostre uma clĂĄusula
where
, estudantes irĂŁo encontrĂĄ-la quando lerem cĂłdigo.fn duplicate<T>(a: T) -> (T, T) where T: Clone, { (a.clone(), a.clone()) }
- Organiza a assinatura da função se vocĂȘ tiver muitos parĂąmetros.
- Possui recursos adicionais tornando-o mais poderoso.
- Se alguĂ©m perguntar, o recurso extra Ă© que o tipo Ă esquerda de â:â pode ser arbitrĂĄrio, como
Option<T>
.
- Se alguĂ©m perguntar, o recurso extra Ă© que o tipo Ă esquerda de â:â pode ser arbitrĂĄrio, como
-
Observe que o Rust ainda não suporta especialização. Por exemplo, dada a função
duplicate
original, é invålido adicionar uma especializaçãoduplicate(a: u32)
.