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 每月下载量

MIT 许可证

32KB
759

termfest

Build Status

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