Иногда я разбиваю свой код на функции (или методы) только для того, чтобы обнаружить, что компилятор жалуется на это.
ЗАЧЕМ?
Часто это происходит из-за того, что я пытаюсь вернуть Iterator или другой Trait.
Я все еще учусь, но пока у меня есть следующие моменты о функциях Rust:
- Вы не можете возвращать черты из функций. Будьте конкретны, верните что-то, что реализует нужный вам трейт. Например, возвращаемый тип SplitWhitespace из функции split_whitespace. Очень конкретно, да? Но он реализует Итератор. Функция split возвращает тип Split другой структуры, которая также реализует Итератор. Полезная ссылка: реализовать итератор.
- Вы можете принимать черты в качестве аргументов, использовать и злоупотреблять этим!
Эмпирическое правило, используйте закон Постеля: Будьте консервативны в том, что отправляете, будьте либеральны в том, что принимаете.