struct Triangle { b: f64, h: f64, } struct Rectangle { l1: f64, l2: f64, } trait Figure { fn area(&self) -> f64; } impl Figure for Triangle { fn area(&self) -> f64 { self.b * self.h / 2.0 } } impl Figure for Rectangle { fn area(&self) -> f64 { self.l1 * self.l2 } } fn print_area(f: impl Figure) { //fn print_area(f: T) { println!("The area of this figure is {}", f.area()) } fn main() { let f1 = Triangle{b: 5.0, h: 8.0}; let f2 = Rectangle{l1: 4.0, l2: 6.0}; print_area(f1); print_area(f2); //print_area(f1); }