async fn work() {
println!("work ran");
}
#[tokio::main]
async fn main() {
let f = work();
println!("created future");
f.await;
}Bu program ne yazdırır?
- aÖnce
work ran, sonracreated future, gövde tam çağrı anında başlar - bÖnce
created future, sonrawork ran✓ - cYalnız
created future; future poll edilmeden düşürülür - dDerlenmez; bir future her zaman yaratıldığı yerde await edilmek zorundadır
Açıklama:Bir
async fn çağrısı yalnızca bir future kurar, başka bir şey yapmaz. Gövde ancak future poll edilince, yani f.await noktasında çalışır. Bu yüzden main içindeki println! önce koşar, work ran sonra gelir. Rust 1.98 / tokio 1.x ile ölçüldü: created future satırı work ran satırından önce basılıyor.