临时抱佛头 發表於 2024-10-12 09:26:48

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>安装依赖:</li><li>使用示例:</li><li>&nbsp;使用await:</li></ul></div><p>在Rust中,<code>async/await</code>&nbsp;用于编写异步代码。它允许您以同步的方式编写异步代码,使得异步操作更易于理解和编写。</p>
<p class="maodian"></p><h2>安装依赖:</h2>
<div class="jb51code"><pre class="brush:bash;">cargo add futures
cargo add async-std</pre></div>
<p class="maodian"></p><h2>使用示例:</h2>
<p>示例1:</p>
<div class="jb51code"><pre class="brush:plain;">use async_std::task::block_on;
fn main() {
    block_on(hello());
}
async fn hello() {
    println!("hello , world!!!");
}</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/202410120922521.png" /></p>
<p>&nbsp;示例2:</p>
<div class="jb51code"><pre class="brush:plain;">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;
}</pre></div>
<p><img alt="" src="https://img.jbzj.com/file_images/article/202410/202410120922522.png" /></p>
<p>示例3:</p>
<p>&nbsp;async代码块:</p>
<div class="jb51code"><pre class="brush:plain;">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() -&gt; impl Future&lt;Output = ()&gt; {
    async {
      println!("hello , world!!!");
      // 使用async_std运行时的sleep,不要使用线程的sleep,睡眠3秒
      sleep(Duration::from_secs(3)).await;
    }
}</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/202410120922523.png" /></p>
<p class="maodian"></p><h2>&nbsp;使用await:</h2>
<p>使用await,</p>
<p>它只能在async函数或者async代码块中用,</p>
<p>它会等待Future代码直到完成,</p>
<p>它不会阻塞当前线程,线程还可以执行其他的Future</p>
<div class="jb51code"><pre class="brush:plain;">use std::time::Duration;
use async_std::task::{block_on, sleep};
fn main() {
    block_on(order());
}
async fn cook() -&gt; String {
    sleep(Duration::from_secs(3)).await;
    "糖醋排骨".to_string()
}
async fn order() {
    println!("来一份糖醋排骨!!!");
    let paigu = cook().await;
    println!("{:?}", paigu);
}</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/202410120922534.png" /></p>
<p>到此这篇关于rust中async/await的使用的文章就介绍到这了,更多相关rust async/await使用内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>Rust 实现 async/await的详细代码</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: rust中async/await的使用示例详解