# 异步编程 async/await

URL: https://caijiao.org/rust/06-concurrency/02-async
Source: docs/rust/06-concurrency/02-async.md
Description: Rust 的异步编程通过 async/await 语法实现非阻塞任务，提升并发效率，适合网络编程和 I/O 密集型应用。

Rust 使用 `async` 和 `await` 关键字支持异步编程， 实现高效的非阻塞操作。

## 异步函数定义

使用 `async fn` 定义异步函数：

```rust
async fn say_hello() {
    println!("Hello, async Rust!");
}
```

## 调用异步函数

异步函数返回 `Future`，需用 `.await` 执行：

```rust
#[tokio::main]
async fn main() {
    say_hello().await;
}
```

## 使用异步运行时

Rust 标准库不直接支持异步运行时，需用外部库，如 `tokio` 或 `async-std`。

添加依赖（Cargo.toml）：

```toml
[dependencies]
tokio = { version = "1", features = ["full"] }
```

## 异步任务示例

```rust
use tokio::time::{sleep, Duration};

async fn async_task(id: u8) {
    println!("任务 {} 开始", id);
    sleep(Duration::from_secs(1)).await;
    println!("任务 {} 结束", id);
}

#[tokio::main]
async fn main() {
    let task1 = async_task(1);
    let task2 = async_task(2);

    tokio::join!(task1, task2);
}
```

## 代码演示

Rust Playground 示例代码
