rust的async/await怎么使用?
时间: 2023-10-17 14:20:27 浏览: 147
在Rust中,使用async/await构建异步代码是非常简单的。首先需要在你的`Cargo.toml`文件中添加`futures`和`tokio`依赖项:
```toml
[dependencies]
tokio = { version = "1.0", features = ["full"] }
futures = "0.3"
```
接着,在你的Rust代码中,你可以使用`async fn`定义异步函数,使用`await`关键字等待异步操作的结果。例如,下面是一个使用`tokio`编写的简单的异步HTTP客户端:
```rust
use tokio::net::TcpStream;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
async fn send_request() -> Result<(), Box<dyn std::error::Error>> {
let mut stream = TcpStream::connect("example.com:80").await?;
let request = "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n";
stream.write_all(request.as_bytes()).await?;
let mut response = String::new();
stream.read_to_string(&mut response).await?;
println!("Response: {}", response);
Ok(())
}
```
在上面的代码中,我们使用`tokio::net::TcpStream`连接到`example.com`的80端口,发送了一个HTTP GET请求,并等待响应返回。注意,我们用`async`修饰了函数`send_request`,并使用了`await`等待异步操作完成。
当然,异步编程还有许多复杂的情况需要处理,例如并发、错误处理等等。但是,使用Rust的async/await语法可以让异步编程更加简单和直观。
阅读全文