Задать вопрос
@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?
  • Вопрос задан
  • 169 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    JVA-084-SELF Java-разработчик: от первого кода до успешного релиза
    1 неделя
    Далее
  • Слёрм
    Архитектура приложений: пиши как разработчик, думай как архитектор (Соло)
    2 месяца
    Далее
  • Skypro
    Java-разработчик с нуля
    9 месяцев
    Далее
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
Написать derive макрос. Правда стоит соизмерить трудозатраты.
Или написать обычный декларативный макрос (не так гибко как derive, но написать проще).

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

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

Похожие вопросы