tokio::timeを使うには、timeフィーチャーを指定する必要がある。
[dependencies]
tokio = { version = "1.42.0", features=[〜, "time"] }
一定時間スリープする。
use std::time::Duration;
tokio::time::sleep(Duration::from_secs(2)).await;
現在時刻を取得する。時間を計るのに使える。(std::time::Instantのtokio版)
let start = tokio::time::Instant::now();
〜
let elapsed /*Duration*/ = start.elapsed();
タイムアウト時間を設定して非同期処理を実行する。
use std::time::Duration;
let duration = Duration::from_secs(1); // タイムアウト時間
let result = tokio::time::timeout(duration, async {
println!("sleep start");
tokio::time::sleep(Duration::from_secs(2)).await;
println!("sleep end");
})
.await;
match result {
Ok(_) => println!("Ok"),
Err(_) => println!("timeout"),
};