5 个版本
使用旧的 Rust 2015
0.2.0 | 2019年1月6日 |
---|---|
0.1.3 | 2018年1月27日 |
0.1.2 | 2018年1月22日 |
0.1.1 | 2017年7月11日 |
0.1.0 | 2017年7月11日 |
#639 in 命令行界面
24 每月下载量
32KB
759 行
termfest
termfest 是一个线程安全的 TUI 库,提供简单的 API 来在终端中渲染文本,深受 nsf/termbox-go 的启发。目前,由于我在 Windows 上的糟糕体验,termfest 不支持 Windows。
termfest 具有内部缓冲区以实现高效的渲染。应用程序可以每次将所有内容渲染到缓冲区中,termfest 清空缓冲区并仅渲染终端状态与缓冲区之间的差异。
use termfest::{Termfest, Event};
use termfest::attr::*;
use termfest::key::*;
// first, initialize termfest.
let (fest, events) = Termfest::hold().unwrap();
let mut y = 0;
// events is a receiver of a channel that accepts terminal events like key input.
for ev in events.iter() {
{
// lock the screen.
let mut screen = fest.lock_screen();
// clear the buffer. you can render everything every time.
// termfest can provide efficient rendering.
screen.clear();
// write to the buffer.
let attr = Attribute { fg: Color::Red, ..Attribute::default() };
screen.print(0, y, "Hello, world!", attr);
// when the screen lock is released, the buffer is flushed.
// (you can flush the buffer with explicit `flush` call.)
}
match ev {
Event::Key(ESC) | Event::Char('q') => break,
Event::Key(ArrowUp) => if y > 0 { y -= 1; },
Event::Key(ArrowDown) => y += 1,
_ => {}
}
}
有关更多信息,请参阅 examples
。
依赖项
~3MB
~58K SLoC