rust中async/await的使用示例详解
作者:UDAIOT1000
在Rust中,async/await用于编写异步代码,使得异步操作更易于理解和编写,通过使用await,在async函数或代码块中等待Future完成,而不会阻塞线程,允许同时执行其他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函数或者async代码块中用,
它会等待Future代码直到完成,
它不会阻塞当前线程,线程还可以执行其他的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使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!