@coder-rust-tokio
<skill_overview> 在 Tokio 运行时上构建可靠的异步服务 启动或配置 Tokio 运行时 生成并发任务 应用超时和取消 使用异步通道和同步 混合阻塞和异步工作 Tokio GitHub Tokio 文档 </skill_overview> 仅在二进制文件中使用 #[tokio::main] 避免在一个进程中创建多个运行时 为服务器选择 multi_thread,为 CLI 选择 current_thread 使用 tokio::spawn 执行并发异步任务 始终处理 JoinHandle 结果 更喜欢用 JoinSet 来管理许多任务 let handle = tokio::spawn(async move { do_work().await });让结果=handle.await?; <timeouts_and_cancellation> 用 tokio::time::timeout 包装外部调用 使用 tokio::select!对于取消路径 通过删除发件人来传播取消 let res = tokio::time::timeout(Duration::from_secs(2), call()).await; </timeouts_and_cancellation> 使用有界通道进行背压 选择 mpsc 作为工作队列,oneshot 进行单一回复 处理关闭的通道而不发生恐慌 <blocking_work> 切勿在异步运行时线程上调用阻塞代码 对于 CPU 限制或阻塞 I/O 使用spawn_blocking 对于异步 I/O 优先选择 tokio::fs 和 tokio::net </blocking_work> <anti_patterns> 避免在异步代码中使用 std::thread::sle避免在不跟踪任务的情况下生成任务避免在异步处理程序内阻塞调用</anti_patterns>
<skill_overview> 在 Tokio 运行时上构建可靠的异步服务 启动或配置 Tokio 运行时 生成并发任务 应用超时和取消 使用异步通道和同步 混合阻塞和异步工作 Tokio GitHub Tokio 文档 </skill_overview> 仅在二进制文件中使用 #[tokio::main] 避免在一个进程中创建多个运行时 为服务器选择 multi_thread,为 CLI 选择 current_thread 使用 tokio::spawn 执行并发异步任务 始终处理 JoinHandle 结果 更喜欢用 JoinSet 来管理许多任务 let handle = tokio::spawn(async move { do_work().await });让结果=handle.await?; <timeouts_and_cancellation> 用 tokio::time::timeout 包装外部调用 使用 tokio::select!对于取消路径 通过删除发件人来传播取消 let res = tokio::time::timeout(Duration::from_secs(2), call()).await; </timeouts_and_cancellation> 使用有界通道进行背压 选择 mpsc 作为工作队列,oneshot 进行单一回复 处理关闭的通道而不发生恐慌 <blocking_work> 切勿在异步运行时线程上调用阻塞代码 对于 CPU 限制或阻塞 I/O 使用spawn_blocking 对于异步 I/O 优先选择 tokio::fs 和 tokio::net </blocking_work> <anti_patterns> 避免在异步代码中使用 std::thread::sle避免在不跟踪任务的情况下生成任务避免在异步处理程序内阻塞调用</anti_patterns>