Возможности функциональных языков: итераторы и замыкания
Дизайн Rust вобрал в себя идеи из многих существующих языков и техник, и одно из значительных влияний – функциональное программирование. Программирование в функциональном стиле часто включает использование функций как значений: передачу их в аргументах, возврат из других функций, присваивание переменным для последующего выполнения и так далее.
В этой главе мы не будем спорить о том, что является функциональным программированием, а что нет. Вместо этого мы обсудим некоторые возможности Rust, похожие на возможности многих языков, которые часто называют функциональными.
Если точнее, мы рассмотрим:
- Замыкания, конструкцию, похожую на функцию, которую можно сохранить в переменной
- Итераторы, способ обработки последовательности элементов
- Как использовать замыкания и итераторы для улучшения проекта ввода-вывода из главы 12
- Производительность замыканий и итераторов (спойлер: они быстрее, чем вы можете подумать!)
Мы уже рассмотрели некоторые другие возможности Rust, такие как сопоставление с образцом и enum, на которые также повлиял функциональный стиль. Поскольку освоение замыканий и итераторов – важная часть написания быстрого, идиоматичного кода на Rust, мы посвятим им всю эту главу.