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

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

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

Более подробно мы поговорим про:

  • Замыкания - конструкции, подобные функциям, которые можно помещать в переменные
  • Итераторы — способ обработки последовательности элементов,
  • То, как, используя замыкания и итераторы, улучшить работу с операциями ввода-вывода в проекте из главы 12
  • Производительность замыканий и итераторов (спойлер: они быстрее, чем вы думаете!)

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