@Eugene523

Как избежать дубликации кода реализуя Trait'ы в Rust?

Допустим у меня есть много структур, каждая из которых содержит одинаковое поле 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?
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
Написать derive макрос. Правда стоит соизмерить трудозатраты.
Или написать обычный декларативный макрос (не так гибко как derive, но написать проще).

А вообще, Rust не Java/C#, trait - не интерфейс.
Если приведете не абстрактные примеры, вполне возможно, что задача решается проще.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы