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

Перенос данных в поток в Rust

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

Создадим строку в main, перенесем ее в замыкание и выведем из фоновой линии:

use std::thread; fn main() { let city = String::from("oslo"); let handle = thread::spawn(move || { println!("{}", city); }); match handle.join() { Ok(_) => println!("done"), Err(_) => println!("failed"), } }

После move имя city в основной линии больше недоступно: владение ушло внутрь замыкания. На экране слово oslo, затем done.

Без переноса ссылка на локальную строку не доживает до конца фоновой линии, и такой код не собирается:

use std::thread; fn main() { let city = String::from("oslo"); let handle = thread::spawn(|| { println!("{}", city); }); let _ = handle; }

Дано число:

let num = 7;

Соберите строку с текстом "id" и этим литералом, перенесите ее во владение фоновой линии и выведите строку после ожидания ручки.

Скажите, почему после move нельзя читать исходное имя строки в main.

Дано число:

let num = 1;

Перенесите копируемое число с этим значением во владение замыкания, верните его увеличенным на единицу и выведите результат ожидания.

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