Функціональні мовні можливості: ітератори та замикання
Дизайн Rust був натхненний багатьма наявними мовами та техніками, і одним із значних впливів є функціональне програмування. Програмування у функціональному стилі часто включає використання функцій як значень шляхом передавання їх як аргументів, повернення їх з інших функцій, присвоювання їх змінним для подальшого виконання тощо.
У цій главі ми не будемо дискутувати про те, що таке функціональне програмування, а що ні, а натомість обговоримо деякі можливості Rust, які подібні до можливостей у багатьох мовах, що часто називають функціональними.
Точніше, ми розглянемо:
- Замикання, конструкцію, схожу на функцію, яку ви можете зберігати у змінній
- Ітератори, спосіб обробки серії елементів
- Як використовувати замикання та ітератори для поліпшення проєкту I/O у главі 12
- Продуктивність замикань та ітераторів (спойлер: вони швидші, ніж ви могли б подумати!)
Ми вже розглянули деякі інші можливості Rust, такі як зіставлення зі зразком (pattern matching) і переліки, на які також вплинув функціональний стиль. Оскільки опанування замикань та ітераторів є важливою частиною написання швидкого, ідіоматичного коду Rust, ми присвятимо цю главу повністю їм.