Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmClMv 286 of 373 menu
◀ ▶

Перенос значения в замыкание в Rust

Слово move перед вертикальными чертами забирает использованные значения из окружения внутрь замыкания. После такой записи владение переходит к короткой функции, и старое имя снаружи больше не доступно.

Перенесем текст в замыкание без параметров и выведем длину уже изнутри:

let name = String::from("ann"); let size = move || name.len(); println!("{}", size());

Строка name после записи с move не читается снаружи: значение живет только внутри size. Для числа перенос копирует бits, потому что тип копируется по умолчанию:

let seed = 7; let pick = move || seed + 1; println!("{}", pick()); println!("{}", seed);

Дана переменная:

let city = String::from("oslo");

Запишите show_city с move, которое возвращает длину city, вызовите его и выведите число.

Даны переменные:

let tag = String::from("v1");

Объявите take_tag с move, которое возвращает сам текст, выведите результат и скажите, можно ли после этого снова прочитать tag снаружи.

Дан следующий код:

let note = String::from("hi"); let echo = move || note; let text = echo();

Скажите, соберется ли чтение note сразу после вызова echo.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить