0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: замыкания, анонимные функции, rust</p>
1
<p>Теги: замыкания, анонимные функции, rust</p>
2
<p><strong>Замыкания</strong>(<strong>closures</strong>) в Rust -- это анонимные функции, которые способны запоминать свое окружение. Если говорить по сути, то практически любая анонимная функция способна запоминать свое окружение, следовательно, она является замыканием. Давайте рассмотрим замыкания на примерах.</p>
2
<p><strong>Замыкания</strong>(<strong>closures</strong>) в Rust -- это анонимные функции, которые способны запоминать свое окружение. Если говорить по сути, то практически любая анонимная функция способна запоминать свое окружение, следовательно, она является замыканием. Давайте рассмотрим замыкания на примерах.</p>
3
<p>Итак, когда замыкание получает значение непосредственно из своего окружения, это значение сохраняется в памяти в целях дальнейшего использования в теле замыкания. Вот простой пример:</p>
3
<p>Итак, когда замыкание получает значение непосредственно из своего окружения, это значение сохраняется в памяти в целях дальнейшего использования в теле замыкания. Вот простой пример:</p>
4
<p>В нашем примере переменная<em>message</em>, по сути, представляет часть лексического окружения, доступного замыканию.</p>
4
<p>В нашем примере переменная<em>message</em>, по сути, представляет часть лексического окружения, доступного замыканию.</p>
5
<p>Далее происходит определение замыкания<strong>hello</strong>, которое имеет возможность обращаться к данному окружению:</p>
5
<p>Далее происходит определение замыкания<strong>hello</strong>, которое имеет возможность обращаться к данному окружению:</p>
6
<p>Идем дальше. Теперь мы можем вызвать замыкание, использующее переменную из внешнего окружения:</p>
6
<p>Идем дальше. Теперь мы можем вызвать замыкание, использующее переменную из внешнего окружения:</p>
7
<p>По итогу на консоль выведется строка "Hello Rust".</p>
7
<p>По итогу на консоль выведется строка "Hello Rust".</p>
8
<p>Если же замыкание должно менять значение внешней переменной, то и данная внешняя переменная, а также переменная-замыкание, должны быть определены с ключевым словом<strong>mut</strong>:</p>
8
<p>Если же замыкание должно менять значение внешней переменной, то и данная внешняя переменная, а также переменная-замыкание, должны быть определены с ключевым словом<strong>mut</strong>:</p>
9
<p>В нашем примере замыкание increase() увеличивает значение переменной<em>n</em>. Таким образом, переменная<em>n</em>, как и переменная<em>increase</em>, определены в качестве изменяемых.</p>
9
<p>В нашем примере замыкание increase() увеличивает значение переменной<em>n</em>. Таким образом, переменная<em>n</em>, как и переменная<em>increase</em>, определены в качестве изменяемых.</p>
10
<p>Осталось посмотреть консольный вывод:</p>
10
<p>Осталось посмотреть консольный вывод:</p>
11
<p><em>По материалам https://metanit.com/rust/tutorial/.</em></p>
11
<p><em>По материалам https://metanit.com/rust/tutorial/.</em></p>
12
12