用途:构建 Rust 终端应用,强调清晰的状态归属、可预测的渲染、响应式输入与可测试的 UI 契约。先判断应用属于真正的 TUI、偶尔提示的 CLI,还是守护进程仪表盘;仅当需要持久终端状态与交互视图时才使用 Ratatui。
主要能力与结构:采用 app/event/action/update/render 结构处理复杂 TUI。渲染保持纯粹,组件读取不可变视图模型并写入帧;事件处理器通过显式动作修改应用状态,避免终端 I/O 散落在组件中。默认优先 ratatui 加 crossterm,除非仓库已有既定后端。用类型化动作与事件代替把原始按键事件传入业务逻辑。
事件与并发:长耗时工作放在任务中,不在渲染与输入循环中阻塞网络或重磁盘操作;后台工作使用有界通道与取消令牌。终端清理视为可靠性关键,正常与错误退出都必须恢复 raw 模式和备用屏幕。显示宽度用 unicode-width 或 Ratatui 文本原语,不能假设字节长度等于终端宽度。
可访问性:按键绑定可发现、状态不能只靠颜色表达、焦点清晰,并为窄终端提供确定性回退。
验证:聚焦测试状态转换与渲染,命令为 cargo fmt --all --check、cargo test --all-targets、cargo clippy --all-targets --all-features -- -D warnings。为稳定屏幕增加渲染快照,为关键流程增加动作与更新测试,引入新事件循环抽象时至少增加一个终端清理路径测试。
参考资料:references/ratatui-app-architecture.md 涵盖应用结构、状态机、视图模型、布局、组件与主题归属;references/events-async-terminal.md 涵盖 crossterm、异步任务、取消、终端恢复与尺寸变化;references/testing-ux.md 涵盖缓冲区断言、insta 快照、按键绑定测试与性能检查。其他细节暂未提供。