В Rust имеется механизм для запуска потоков ОС посредством функции scoped,
которая принимает перемещающее окружение замыкания в качестве аргумента.
use std::thread;
static NTHREADS: i32 = 10;
// Это основной поток `main`
fn main() {
// Создадим вектор, в котором будет хранить созданные потоки.
let mut children = vec![];
for i in 0..NTHREADS {
// Запустить ещё один поток
children.push(thread::spawn(move || {
println!("Это поток под номером {}", i)
}));
}
for child in children {
// Ждём завершения работы потока. Возвращаем результат.
let _ = child.join();
}
}Эти потоки управляются ОС.