名称: rust-系统-事件-驱动 描述: Rust事件驱动系统编程最佳实践,适用于异步运行时、通道、套接字、终端和并发。这个技能应在编写、审查或重构具有异步I/O、多线程、终端界面或网络通信的Rust应用程序时使用。在涉及tokio、async/await、通道、套接字、TTY处理、信号和流式I/O的任务中触发。
Rust 系统事件驱动最佳实践
Rust中事件驱动系统编程的全面最佳实践指南。包含8个类别的42条规则,按影响优先级排序,指导异步运行时使用、通道通信、线程、网络和终端处理。
何时应用
在以下情况下参考这些指南:
- 使用Tokio或async-std构建异步应用程序
- 实现网络服务器或客户端
- 编写终端用户界面(TUI)
- 管理并发任务和共享状态
- 处理Unix信号和优雅关机
规则类别按优先级
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 异步运行时模式 | 关键 | async- |
| 2 | 通道通信 | 关键 | chan- |
| 3 | 线程与同步 | 高 | sync- |
| 4 | 套接字与网络I/O | 高 | net- |
| 5 | 终端与TTY处理 | 中高 | term- |
| 6 | 信号与进程控制 | 中 | sig- |
| 7 | 文件I/O流 | 中 | io- |
| 8 | 事件循环架构 | 低中 | loop- |
快速参考
1. 异步运行时模式(关键)
async-spawn-blocking- 使用spawn_blocking处理CPU密集型工作async-select-biased- 使用偏置选择进行优先级处理async-no-std-block- 在异步上下文中避免std阻塞调用async-cancellation-safe- 设计可取消安全的异步操作async-task-local- 使用任务本地存储用于请求上下文async-structured-concurrency- 使用JoinSet进行结构化并发
2. 通道通信(关键)
chan-bounded-backpressure- 使用有界通道进行背压chan-oneshot-response- 使用单次通道进行请求-响应chan-broadcast-fanout- 使用广播通道进行扇出chan-watch-state- 使用监视通道用于共享状态chan-graceful-shutdown- 使用通道关闭进行优雅关机
3. 线程与同步(高)
sync-arc-mutex-shared- 使用Arc<Mutex>用于共享可变状态sync-rwlock-read-heavy- 使用RwLock用于读多写少的工作负载sync-atomic-counters- 使用原子操作用于简单计数器和标志sync-avoid-lock-await- 避免在跨await时持有std Mutexsync-semaphore-limit- 使用信号量限制并发sync-parking-lot- 使用parking_lot用于高竞争锁
4. 套接字与网络I/O(高)
net-split-reader-writer- 将套接字拆分为读写两半net-framing-codec- 使用帧处理用于基于消息的协议net-connection-pool- 使用连接池用于重复连接net-timeout-all-io- 为所有网络操作添加超时net-tcp-nodelay- 设置TCP_NODELAY用于低延迟协议net-graceful-disconnect- 实现优雅连接关闭
5. 终端与TTY处理(中高)
term-raw-mode-restore- 退出时始终恢复终端状态term-alternate-screen- 使用备用屏幕用于全屏应用term-async-event-stream- 使用异步事件流用于终端输入term-buffered-output- 缓冲终端输出以提高性能term-handle-resize- 处理终端调整大小事件
6. 信号与进程控制(中)
sig-ctrl-c-graceful- 处理Ctrl-C进行优雅关机sig-unix-signals- 异步处理Unix信号sig-child-reap- 收割子进程以避免僵尸进程sig-timeout-shutdown- 设置关机超时以强制退出
7. 文件I/O流(中)
io-async-file-ops- 在异步上下文中使用异步文件操作io-stream-large-files- 流式处理大文件而不是完全加载io-copy-bidirectional- 使用copy_bidirectional进行代理io-pipe-communication- 使用管道进行进程通信io-flush-before-read- 在期望响应之前刷新写入
8. 事件循环架构(低中)
loop-actor-model- 使用actor模式用于有状态组件loop-event-types- 使用类型化事件而非动态分发loop-state-machine- 将协议状态建模为类型安全状态机loop-layered-architecture- 将I/O与业务逻辑分离loop-cancellation-token- 使用CancellationToken进行协调关机
如何使用
阅读各个参考文件以获取详细解释和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则的模板 |
| metadata.json | 版本和参考信息 |