Реализация признаков без повторения методов, уже определенных в структуре - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть черта, у которой есть только одно требование - наличие методов len(&self) -> usize.Затем он предоставляет реализации для нескольких новых методов для структуры.

trait MyTrait {
    fn len(&self) -> usize;

    // ... some new functions with implementations
}

Я хотел бы реализовать эту черту на std::collections::LinkedList, который уже имеет метод с такой точной сигнатурой типа.В настоящее время я делаю это:

impl<T> MyTrait for LinkedList<T> {
    fn len(&self) -> usize {
        self.len()
    }
}

Затем я могу использовать новые методы, определенные MyTrait в моих LinkedList экземплярах.Однако нет необходимости повторять определение метода, подобного этому, поскольку сигнатуры типов идентичны.Есть ли способ пропустить переопределение len в моей реализации черты?

1 Ответ

0 голосов
/ 10 декабря 2018

Есть ли способ пропустить переопределение len в моей реализации черты?

Нет, это невозможно.

Возможно, выможет написать какой-то макрос для написания кода для вас, но работа с параметрами типа раздражает, если не сказать больше.

См. также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...