rust中async/await的使用示例詳解
在Rust中,async/await 用于編寫(xiě)異步代碼。它允許您以同步的方式編寫(xiě)異步代碼,使得異步操作更易于理解和編寫(xiě)。
安裝依賴:
cargo add futures cargo add async-std
使用示例:
示例1:
use async_std::task::block_on;
fn main() {
block_on(hello());
}
async fn hello() {
println!("hello , world!!!");
}
示例2:
use std::time::Duration;
use async_std::task::{block_on, sleep};
fn main() {
let future = hello();
block_on(future); // 會(huì)阻塞線程等待異步任務(wù)完成
println!("hello main");
}
async fn hello() {
println!("hello , world!!!");
// 使用async_std運(yùn)行時(shí)的sleep,不要使用線程的sleep,睡眠3秒
sleep(Duration::from_secs(3)).await;
}
示例3:
async代碼塊:
use std::{future::Future, time::Duration};
use async_std::task::{block_on, sleep};
fn main() {
let future = hello();
block_on(future); // 會(huì)阻塞線程等待異步任務(wù)完成
println!("hello main");
}
fn hello() -> impl Future<Output = ()> {
async {
println!("hello , world!!!");
// 使用async_std運(yùn)行時(shí)的sleep,不要使用線程的sleep,睡眠3秒
sleep(Duration::from_secs(3)).await;
}
}
使用await:
使用await,
它只能在async函數(shù)或者async代碼塊中用,
它會(huì)等待Future代碼直到完成,
它不會(huì)阻塞當(dāng)前線程,線程還可以執(zhí)行其他的Future
use std::time::Duration;
use async_std::task::{block_on, sleep};
fn main() {
block_on(order());
}
async fn cook() -> String {
sleep(Duration::from_secs(3)).await;
"糖醋排骨".to_string()
}
async fn order() {
println!("來(lái)一份糖醋排骨!!!");
let paigu = cook().await;
println!("{:?}", paigu);
}
到此這篇關(guān)于rust中async/await的使用的文章就介紹到這了,更多相關(guān)rust async/await使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Rust生命周期之驗(yàn)證引用有效性與防止懸垂引用方式
本文介紹了Rust中生命周期注解的應(yīng)用,包括防止懸垂引用、在函數(shù)中使用泛型生命周期、生命周期省略規(guī)則、在結(jié)構(gòu)體中使用生命周期、靜態(tài)生命周期以及如何將生命周期與泛型和特質(zhì)約束結(jié)合,通過(guò)這些機(jī)制,Rust在編譯時(shí)就能捕獲內(nèi)存安全問(wèn)題2025-02-02
Rust編寫(xiě)自動(dòng)化測(cè)試實(shí)例權(quán)威指南
這篇文章主要為大家介紹了Rust編寫(xiě)自動(dòng)化測(cè)試實(shí)例權(quán)威指南詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Rust中實(shí)例化動(dòng)態(tài)對(duì)象的示例詳解
這篇文章主要為大家詳細(xì)介紹了Rust中實(shí)例化動(dòng)態(tài)對(duì)象的多種方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開(kāi)發(fā)流程
Rust中的Crate是編譯器處理的最小代碼單元,可以是二進(jìn)制或庫(kù),每個(gè)Crate由一個(gè)CrateRoot文件(通常是src/main.rs或src/lib.rs)定義,本文給大家介紹Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開(kāi)發(fā)流程,感興趣的朋友一起看看吧2025-02-02

