Замыкания в Rust | OTUS

Замыкания в Rust

Замыкания (closures) в Rust -- это анонимные функции, которые способны запоминать свое окружение. Если говорить по сути, то практически любая анонимная функция способна запоминать свое окружение, следовательно, она является замыканием. Давайте рассмотрим замыкания на примерах.

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

1-1801-c01cbb.png

В нашем примере переменная message, по сути, представляет часть лексического окружения, доступного замыканию.

2-1801-7c7318.png

Далее происходит определение замыкания hello, которое имеет возможность обращаться к данному окружению:

3-1801-b2c548.png

Идем дальше. Теперь мы можем вызвать замыкание, использующее переменную из внешнего окружения:

4-1801-a15a6b.png

По итогу на консоль выведется строка "Hello Rust".

Если же замыкание должно менять значение внешней переменной, то и данная внешняя переменная, а также переменная-замыкание, должны быть определены с ключевым словом mut:

5-1801-d908f3.png

В нашем примере замыкание increase() увеличивает значение переменной n. Таким образом, переменная n, как и переменная increase, определены в качестве изменяемых.

Осталось посмотреть консольный вывод:

6-1801-9b5c2d.png

По материалам https://metanit.com/rust/tutorial/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто