Mini-Projeto: Calculadora Geométrica Genérica 📐
Neste projeto, vamos usar Generics e Traits para criar um sistema que calcula áreas de diferentes formas geométricas de forma flexível.
📋 Requisitos
- Trait Area: Defina uma trait
Areacom um métodocalcular_area(&self) -> f64. - Formas: Implemente a trait para uma
struct Circuloe umastruct Retangulo. - Função Genérica: Escreva uma função que receba qualquer tipo que implemente
Areae imprima o resultado formatado.
🚀 Guia de Execução
- Implementação sugerida:
trait Area { fn calcular_area(&self) -> f64; } struct Circulo { raio: f64 } struct Retangulo { largura: f64, altura: f64 } impl Area for Circulo { fn calcular_area(&self) -> f64 { std::f64::consts::PI * self.raio * self.raio } } impl Area for Retangulo { fn calcular_area(&self) -> f64 { self.largura * self.altura } } // Função genérica com Trait Bound fn exibir_area<T: Area>(forma: T) { println!("A área da forma é: {:.2}", forma.calcular_area()); } fn main() { let c = Circulo { raio: 5.0 }; let r = Retangulo { largura: 10.0, altura: 2.0 }; exibir_area(c); exibir_area(r); }
✅ Critérios de Aceite
- [ ] Definição e implementação correta de uma Trait.
- [ ] Uso de Generics com Trait Bounds (
<T: Area>). - [ ] O programa realiza cálculos precisos para diferentes tipos.