タイムアウト
タスクの完了に時間がかかりすぎて、いつまでも待ちたくないことがあります。timeout はタスクに時間制限を設けます。制限時間内に完了すれば結果を取得でき、そうでなければキャンセルされて、エラーが返されます。
この例では、ネットワークリクエストに完了まで 5 ミリ秒が与えられます。制限時間内に完了した場合は、結果が表示されます。時間を超過した場合は、プログラムがタイムアウトを報告します。
use std::time::Duration;
use tokio::time::timeout;
async fn fetch_network_request() -> u32 {
89
}
#[tokio::main]
async fn main() {
match timeout(Duration::from_millis(5), fetch_network_request()).await {
Ok(x) => println!("Received {x}"),
Err(_) => eprintln!("Timed Out!"),
}
}
macrosとtime機能を有効にして、tokioをCargo.tomlに追加してください。[dependencies] tokio = { version = "*", features = ["macros", "time"] }