Rust有哪些好用的CMD UI库推荐
大家好,最近在用Rust开发一个命令行工具,想给程序加一些交互式的UI组件,比如菜单选择、进度条或者表格展示之类的。不知道Rust生态里有哪些比较成熟的CMD UI库可以推荐?最好能支持跨平台,文档齐全,社区活跃度高的。之前听说过tui-rs和cursive,但不太清楚它们的具体优劣和使用场景。有没有实际项目经验的小伙伴分享一下使用心得?或者有其他更推荐的库?谢谢!
2 回复
推荐几个Rust的终端UI库:
- ratatui(原tui-rs)
- 最流行的终端UI库,功能完整
- 支持表格、列表、图表等丰富组件
- 文档完善,社区活跃
- cursive
- 简单易用,适合快速开发
- 内置常用组件(按钮、输入框等)
- 响应式布局
- dialoguer
- 专注于交互式命令行工具
- 提供确认框、选择列表、输入提示等
- API简洁直观
- indicatif
- 专注于进度条和状态指示
- 轻量级,易于集成
选择建议:
- 需要完整UI界面 → ratatui
- 快速开发简单交互 → cursive
- 只需基础交互组件 → dialoguer
- 主要显示进度 → indicatif
这些库都支持跨平台,建议根据项目需求选择。
在 Rust 生态中,有几个优秀的 CMD(命令行界面)UI 库,适用于构建交互式终端应用。以下是推荐的选择:
-
Cursive
- 功能丰富,支持多视图、对话框、按钮等组件。
- 适合构建复杂的 TUI(文本用户界面)应用。
- 示例代码:
use cursive::views::TextView; fn main() { let mut siv = cursive::default(); siv.add_layer(TextView::new("Hello Cursive!")); siv.run(); }
-
tui-rs
- 轻量高效,基于即时模式(immediate mode)渲染。
- 广泛用于仪表盘或监控工具。
- 示例代码:
use tui::Terminal; use tui::backend::RawBackend; use tui::widgets::{Block, Borders}; use tui::layout::{Layout, Constraint, Direction}; fn main() -> Result<(), Box<dyn std::error::Error>> { let backend = RawBackend::new()?; let mut terminal = Terminal::new(backend)?; terminal.draw(|mut f| { let chunks = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref()) .split(f.size()); let block = Block::default().title("Block").borders(Borders::ALL); f.render_widget(block, chunks[0]); })?; Ok(()) }
-
Dialoguer
- 专注于简单交互,如输入、选择、确认等。
- 适合快速添加用户提示功能。
- 示例代码:
use dialoguer::{Input, Select}; fn main() { let name = Input::<String>::new().with_prompt("Your name").interact().unwrap(); let items = vec!["Option 1", "Option 2"]; let selection = Select::new().items(&items).interact().unwrap(); println!("Hello {}, you selected: {}", name, items[selection]); }
-
Termion
- 提供底层终端控制,适合自定义 UI 逻辑。
- 结合其他库(如 tui-rs)使用更灵活。
选择建议:
- 简单交互用 Dialoguer。
- 复杂界面用 Cursive 或 tui-rs。
- 需要底层控制时选 Termion。
根据项目需求权衡易用性与灵活性。

