Rust Async Patterns

作者 wshobson46891e7e60da无许可证收录于 2026年10月8日更新于 2026年10月8日

Master Rust async programming with Tokio, async traits, error handling, and concurrent patterns. Use when building async Rust applications, implementing concurrent systems, or debugging async code.

AI 生成的概览

关于使用 Tokio 运行时编写和调试异步 Rust 代码的参考指南。

功能
该技能提供异步 Rust 编程的生产级模式,涵盖异步执行模型、Future、任务、运行时、通道、流、取消与错误处理。它给出快速开始的 Cargo 依赖清单和示例代码,以及并发方面的注意事项。更详细的示例放在随附的参考文件中。
适用场景
适用于构建异步 Rust 应用、实现并发网络服务、采用 Tokio 进行异步 I/O,或调试和优化异步代码的场景。也适合处理异步错误或分析取消与任务管理问题时使用。
运行要求
不含脚本,仅提供说明与一份参考文档。示例假定已安装 Rust 工具链与 Cargo,并使用 tokio、futures、async-trait、anyhow、tracing、tracing-subscriber 等 crate。

Rust Async Patterns

Production patterns for async Rust programming with Tokio runtime, including tasks, channels, streams, and error handling.

When to Use This Skill

  • Building async Rust applications
  • Implementing concurrent network services
  • Using Tokio for async I/O
  • Handling async errors properly
  • Debugging async code issues
  • Optimizing async performance

Core Concepts

1. Async Execution Model

Future (lazy) → poll() → Ready(value) | Pending                ↑           ↓              Waker ← Runtime schedules

2. Key Abstractions

ConceptPurpose
FutureLazy computation that may complete later
async fnFunction returning impl Future
awaitSuspend until future completes
TaskSpawned future running concurrently
RuntimeExecutor that polls futures

Quick Start

toml
# Cargo.toml[dependencies]tokio = { version = "1", features = ["full"] }futures = "0.3"async-trait = "0.1"anyhow = "1.0"tracing = "0.1"tracing-subscriber = "0.3"
rust
use tokio::time::{sleep, Duration};use anyhow::Result;
#[tokio::main]async fn main() -> Result<()> {    // Initialize tracing    tracing_subscriber::fmt::init();
    // Async operations    let result = fetch_data("https://api.example.com").await?;    println!("Got: {}", result);
    Ok(())}
async fn fetch_data(url: &str) -> Result<String> {    // Simulated async operation    sleep(Duration::from_millis(100)).await;    Ok(format!("Data from {}", url))}

Detailed patterns and worked examples

Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.

Best Practices

Do's

  • Use tokio::select! - For racing futures
  • Prefer channels - Over shared state when possible
  • Use JoinSet - For managing multiple tasks
  • Instrument with tracing - For debugging async code
  • Handle cancellation - Check CancellationToken

Don'ts

  • Don't block - Never use std::thread::sleep in async
  • Don't hold locks across awaits - Causes deadlocks
  • Don't spawn unboundedly - Use semaphores for limits
  • Don't ignore errors - Propagate with ? or log
  • Don't forget Send bounds - For spawned futures

来源与署名

来源:wshobson/agents位于plugins/systems-programming/skills/rust-async-patterns提交46891e7

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架