HTML Diff
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