Exercícios: Aula 10 - Generics e Traits 🧬
🟢 Básico
- Par Genérico: Crie uma
struct Par<T>que armazene dois valores do mesmo tipoT. Instancie um par dei32e um par deString. - Trait de Fala: Defina uma
trait Falacom um métodofalar(&self). Implemente-a para umastruct Cachorroe umastruct Gato.
🟡 Intermediário
- Comparador Genérico: Escreva uma função genérica chamada
imprimir_se_maior<T: PartialOrd + std::fmt::Display>(a: T, b: T)que compare dois valores e imprima o maior deles. - Implementação de Trait: Implemente a trait
std::fmt::Displaypara uma structPonto { x: i32, y: i32 }para que ela possa ser impressa diretamente comprintln!("{}", ponto).
🔴 Desafio
5. Área em Traits: Crie uma trait Forma com o método area(&self) -> f64. Implemente essa trait para Circulo e Retangulo. Em seguida, crie uma função que receba uma referência genérica &T onde T: Forma e imprima a área formatada.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Par Genérico **Resolução e Implementação:**// Estrutura de implementação recomendada para Par Genérico
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Trait de Fala
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Comparador Genérico
// Validação de regras de negócio e retorno consistente