Pular para conteúdo

Exercícios: Aula 10 - Generics e Traits 🧬

🟢 Básico

  1. Par Genérico: Crie uma struct Par<T> que armazene dois valores do mesmo tipo T. Instancie um par de i32 e um par de String.
  2. Trait de Fala: Defina uma trait Fala com um método falar(&self). Implemente-a para uma struct Cachorro e uma struct Gato.

🟡 Intermediário

  1. 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.
  2. Implementação de Trait: Implemente a trait std::fmt::Display para uma struct Ponto { x: i32, y: i32 } para que ela possa ser impressa diretamente com println!("{}", 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
- **Explicação:** A solução atende diretamente aos requisitos de **Generics e Traits**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: Trait de Fala **Resolução e Implementação:**
// Estrutura de implementação recomendada para Trait de Fala
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Generics e Traits**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Comparador Genérico **Resolução e Implementação:**
// Estrutura de implementação recomendada para Comparador Genérico
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Generics e Traits**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Implementação de Trait **Resolução e Implementação:**
// Estrutura de implementação recomendada para Implementação de Trait
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Generics e Traits**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 5: Área em Traits **Resolução e Implementação:**
// Estrutura de implementação recomendada para Área em Traits
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Generics e Traits**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.