Функциональные возможности языка: Итераторы и Замыкания

Дизайн Rust вдохновлен многими существующими языками и техниками, и одним значительным влиянием является функциональное программирование. Программирование в функциональном стиле часто включает использование функций в качестве значений путем передачи их в аргументы, возврата из других функций, присваивания переменным для последующего выполнения и так далее.

В этой главе мы не будем обсуждать вопрос о том, что такое функциональное программирование, а что нет, а вместо этого рассмотрим некоторые особенности Rust, которые похожи на features во многих языках, обычно называемых функциональными.

Если конкретнее, мы рассмотрим:

  • Замыкания (closures) — конструкцию, похожую на функцию, которую можно сохранить в переменной
  • Итераторы (iterators) — способ обработки последовательности элементов
  • Как использовать замыкания и итераторы для улучшения проекта I/O из главы 12
  • Производительность замыканий и итераторов (внимание, спойлер: они быстрее, чем вы могли подумать!)

Мы уже рассмотрели некоторые другие возможности Rust, такие как сопоставление с образцом (pattern matching) и перечисления (enums), которые также находятся под влиянием функционального стиля. Поскольку освоение замыканий и итераторов является важной частью написания быстрого, идиоматического кода на Rust, мы посвятим им всю эту главу.