最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

rust中async/await的使用示例詳解

 更新時間:2024年10月12日 09:26:48   作者:UDAIOT1000  
在Rust中,async/await用于編寫異步代碼,使得異步操作更易于理解和編寫,通過使用await,在async函數(shù)或代碼塊中等待Future完成,而不會阻塞線程,允許同時執(zhí)行其他Future,這種機制簡化了異步編程的復雜性,使代碼更加直觀

在Rust中,async/await 用于編寫異步代碼。它允許您以同步的方式編寫異步代碼,使得異步操作更易于理解和編寫。

安裝依賴:

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); // 會阻塞線程等待異步任務完成
    println!("hello main");
}
async fn hello() {
    println!("hello , world!!!");
    // 使用async_std運行時的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); // 會阻塞線程等待異步任務完成
    println!("hello main");
}
fn hello() -> impl Future<Output = ()> {
    async {
        println!("hello , world!!!");
        // 使用async_std運行時的sleep,不要使用線程的sleep,睡眠3秒
        sleep(Duration::from_secs(3)).await;
    }
}

 使用await:

使用await,

它只能在async函數(shù)或者async代碼塊中用,

它會等待Future代碼直到完成,

它不會阻塞當前線程,線程還可以執(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!("來一份糖醋排骨!!!");
    let paigu = cook().await;
    println!("{:?}", paigu);
}

到此這篇關于rust中async/await的使用的文章就介紹到這了,更多相關rust async/await使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • 深入了解Rust中引用與借用的用法

    深入了解Rust中引用與借用的用法

    這篇文章主要為大家詳細介紹了Rust語言中引用與借用的使用,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以了解一下
    2022-11-11
  • Rust生命周期之驗證引用有效性與防止懸垂引用方式

    Rust生命周期之驗證引用有效性與防止懸垂引用方式

    本文介紹了Rust中生命周期注解的應用,包括防止懸垂引用、在函數(shù)中使用泛型生命周期、生命周期省略規(guī)則、在結構體中使用生命周期、靜態(tài)生命周期以及如何將生命周期與泛型和特質約束結合,通過這些機制,Rust在編譯時就能捕獲內存安全問題
    2025-02-02
  • Rust之Substrate框架中的pallet詳解

    Rust之Substrate框架中的pallet詳解

    Pallet是Substrate區(qū)塊鏈的基礎模塊,它定義了區(qū)塊鏈的業(yè)務邏輯和狀態(tài)轉換規(guī)則。開發(fā)人員可以使用現(xiàn)有的Pallet來快速構建區(qū)塊鏈,也可以開發(fā)自定義的Pallet來實現(xiàn)特定的功能,感興趣的小伙伴可以參考閱讀下
    2023-05-05
  • Rust編寫自動化測試實例權威指南

    Rust編寫自動化測試實例權威指南

    這篇文章主要為大家介紹了Rust編寫自動化測試實例權威指南詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Rust中實例化動態(tài)對象的示例詳解

    Rust中實例化動態(tài)對象的示例詳解

    這篇文章主要為大家詳細介紹了Rust中實例化動態(tài)對象的多種方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-02-02
  • Rust 中的 Packages 與 Crates模塊化構建的基礎及開發(fā)流程

    Rust 中的 Packages 與 Crates模塊化構建的基礎及開發(fā)流程

    Rust中的Crate是編譯器處理的最小代碼單元,可以是二進制或庫,每個Crate由一個CrateRoot文件(通常是src/main.rs或src/lib.rs)定義,本文給大家介紹Rust 中的 Packages 與 Crates模塊化構建的基礎及開發(fā)流程,感興趣的朋友一起看看吧
    2025-02-02
  • 使用Rust語言管理Node.js版本

    使用Rust語言管理Node.js版本

    這篇文章主要介紹一個使用?Rust?進行編寫的一體化版本管理工具?Rtx,比如使用它來管理?Node.js?版本,它很簡單易用,使用了它,就可以拋棄掉?nvm?了,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Rust中字符串類型String的46種常用方法分享

    Rust中字符串類型String的46種常用方法分享

    Rust主要有兩種類型的字符串:&str和String,本文主要為大家介紹的是String類型的字符串以及它常用的46種方法,感興趣的小伙伴可以了解一下
    2023-06-06
  • Rust中的Vector多值存儲使用方法

    Rust中的Vector多值存儲使用方法

    Vector在Rust中是一個非常靈活和強大的數(shù)據(jù)結構,通過有效利用它,我們可以更加方便地處理和操作多個值,使得代碼更加清晰和易于維護,這篇文章主要介紹了Rust中的Vector多值存儲的利器,需要的朋友可以參考下
    2024-02-02
  • 詳解Rust 修改源

    詳解Rust 修改源

    這篇文章主要介紹了Rust 修改源的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01

最新評論

新乡县| 城市| 巨野县| 山东省| 元朗区| 巴楚县| 阿坝| 昭苏县| 邻水| 德州市| 金寨县| 闵行区| 襄垣县| 弥勒县| 山东省| 溧阳市| 板桥市| 名山县| 泰州市| 昔阳县| 山丹县| 南平市| 延川县| 安仁县| 玛多县| 通河县| 富顺县| 噶尔县| 天长市| 金川县| 佛坪县| 化隆| 沁水县| 文昌市| 华坪县| 丰宁| 司法| 牙克石市| 平乐县| 民和| 大名县|