Не .await
порожденная задача. Это похоже на присоединение к потоку: он ожидает завершения задачи sh, прежде чем продолжить. Дескриптор spawn
возвращает не нужно ждать, чтобы задача была доведена до завершения.
task::spawn(w())<del>.await</del>;
Как написано, вы правы, что task::spawn(w()).await
не отличается от w().await
. Они оба блокируют поток, ожидающий от w()
до fini sh.
Тогда какова цель ожидания вызова вызова? Это полезно, если вы хотите запустить фоновую задачу, выполнить другую работу в текущем потоке и , затем блок.
let handle = task::spawn(w());
do_other_things_for_a_while();
// Block and retrieve the result.
let result = handle.await;