Токіо
Tokio надає:
- Багатопотокове середовище виконання для виконання асинхронного коду.
 - Асинхронну версію стандартної бібліотеки.
 - Велику екосистему бібліотек.
 
use tokio::time; async fn count_to(count: i32) { for i in 0..count { println!("Підрахунок у завданні: {i}!"); time::sleep(time::Duration::from_millis(5)).await; } } #[tokio::main] async fn main() { tokio::spawn(count_to(10)); for i in 0..5 { println!("Основне завдання: {i}"); time::sleep(time::Duration::from_millis(5)).await; } }
- 
За допомогою макросу
tokio::mainми тепер можемо зробитиmainасинхронною. - 
Функція
spawnстворює нове, одночасне “завдання”. - 
Примітка:
spawnприймаєFuture, ви не викликаєте.awaitнаcount_to. 
Подальше дослідження:
- 
Чому
count_to(зазвичай) не досягає 10? Це приклад асинхронного скасування.tokio::spawnповертає дескриптор, який можна чекати, поки він не завершиться. - 
Спробуйте
count_to(10).awaitзамість породження. - 
Спробуйте дочекатися завдання, повернутого з
tokio::spawn.