Допустим у меня есть много структур, каждая из которых содержит одинаковое поле 
area и реализует интерфейс 
Shape.  К примеру:
pub trait Shape {
    fn get_area(&self) -> f64;
}
pub struct Rectangle {
    area: f64
}
impl Shape for Rectangle {
    fn get_area(&self) -> f64 {
        return self.area;
    }
}
pub struct Circle {
   area: f64
}
impl Shape for Circle {
    fn get_area(&self) -> f64 {
        return self.area;
    }
}
Правильно ли я понимаю, что для каждого нового типа надо переписывать метод 
get_area? Как избежать дубликации кода реализуя Trait'ы в Rust?