1 个不稳定版本
0.1.0 | 2021 年 6 月 24 日 |
---|
#900 在 命令行界面
54KB
1.5K SLoC
Tortoise
在 Rust 中构建终端用户界面。
lib.rs
:
tortoise
是一个用于在 Rust 中构建终端用户界面的 crate。
use tortoise::{event::Event, screen::Screen, style::Style};
let mut screen = Screen::open().unwrap();
screen.hide_cursor().unwrap();
loop {
let event = screen.listen().unwrap();
match event {
Event::Char('q') => break,
_ => {
screen.clear_row(0);
screen.put_str(0, 0, Style::default(), &format!("{}", event));
screen.flush().unwrap();
}
}
}
term-ui
在 Unix 上使用 /dev/tty,在 Windows 上使用 $CONOUT$ 而不是 stdin/stdout,这样您的程序仍然可以使用标准 I/O 进行一些有用的操作。例如,您可以编写一个交互式文本编辑器,可以这样调用。
echo "hello" | your-editor | # use the output...
而不是将 "hello" 解释为界面中的按键,文本编辑器可以使用 "hello" 作为基础文本,并将结果文本写入 stdout。
Screen
是一个二维的 Cell
网格,每个 Cell
存储一个字符及其关联的样式信息,如颜色、粗体等。您的应用程序可以操作这个网格,然后在 Screen
上调用 "flush" 来将任何更改写入终端。只有在调用 flush()
之前,才会将内容写入终端,并且库会跟踪哪些单元格已更改,以最小化写入的数据量。这意味着您的代码在跟踪屏幕需要更改的部分时可以不太聪明,但您的应用程序将保持相对快速。
依赖项
~8–10MB
~193K SLoC