RU

rust-async-patterns

Async Rust programming guide for building concurrent systems with Tokio.

Install

mkdir -p .claude/skills/rust-async-patterns && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/1440" && unzip -o skill.zip -d .claude/skills/rust-async-patterns && rm skill.zip

Installs to .claude/skills/rust-async-patterns

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

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.
197 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Manage async execution with Tokio runtime
  • Implement concurrent network services
  • Handle async errors using anyhow
  • Debug async code with tracing
  • Manage multiple tasks with JoinSet
  • Use tokio::select! for racing futures

How it works

The skill utilizes the Tokio runtime to poll futures and manage task concurrency. It provides patterns for safe async execution, including channel-based communication and proper error propagation.

Inputs & outputs

You give it
Async function or concurrent logic requirement
You get back
Performant async implementation with error handling

When to use rust-async-patterns

  • Implement async traits
  • Debug async deadlock or performance issues
  • Manage tasks with Tokio runtime
  • Handle errors in async functions

About this skill

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

# 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"
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

When not to use it

  • Blocking operations like std::thread::sleep
  • Holding locks across await points
  • Unbounded task spawning

Prerequisites

tokiofuturesasync-traitanyhow

Limitations

  • Requires careful management of Send bounds
  • Must avoid blocking the executor thread

How it compares

This approach provides production-grade async patterns and safety checks compared to manual thread management or basic async implementation.

Compared to similar skills

rust-async-patterns side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
rust-async-patterns (this skill)112moReviewIntermediate
perf02moReviewAdvanced
tauri761moReviewAdvanced
arm-cortex-expert294moNo flagsAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

More by wshobson

View all by wshobson

You might also like

perf

microsoft

Speed and memory performance rules for Rust crates, webui-framework, and webui-router.

00

tauri

EpicenterHQ

Tauri path handling, cross-platform file operations, and API usage. Use when working with file paths in Tauri frontend code, accessing filesystem APIs, or handling platform differences in desktop apps.

76185

arm-cortex-expert

sickn33

Senior embedded software engineer specializing in firmware and driver development for ARM Cortex-M microcontrollers (Teensy, STM32, nRF52, SAMD). Decades of experience writing reliable, optimized, and maintainable embedded code with deep expertise in memory barriers, DMA/cache coherency, interrupt-driven I/O, and peripheral drivers.

2975

blockchain-developer

sickn33

Build production-ready Web3 applications, smart contracts, and decentralized systems. Implements DeFi protocols, NFT platforms, DAOs, and enterprise blockchain integrations. Use PROACTIVELY for smart contracts, Web3 apps, DeFi protocols, or blockchain infrastructure.

655

rust-errors

EpicenterHQ

Rust to TypeScript error handling patterns for Tauri apps. Use when defining Rust errors that will be passed to TypeScript, handling Tauri command errors, or creating discriminated union error types.

521

debug-lldb

regenrek

Capture and analyze thread backtraces with LLDB/GDB to debug hangs, deadlocks, UI freezes, IPC stalls, or high-CPU loops across any language or project. Use when an app becomes unresponsive, switching contexts stalls, or you need thread stacks to locate lock inversion or blocking calls.

116

Search skills

Search the agent skills registry