9个版本
新 0.2.5 | 2024年8月15日 |
---|---|
0.2.4 | 2021年3月2日 |
0.2.3 | 2021年2月26日 |
0.2.1 | 2020年9月7日 |
0.0.1 | 2020年8月25日 |
#236 in 命令行界面
131 每月下载量
405KB
8K SLoC
yacurses
另一个curses库
lib.rs
:
另一个curses库。
此crate绑定到Unix系统上的ncurses (MIT-X11许可),或Windows上的捆绑版pdcurses (公共领域)。然后在curses之上暴露了一个较为rust化的接口。
提供的接口是完全安全的,但并不暴露curses API的每一个部分。例如,这仅支持单个窗口,并且不支持通过格式字符串打印的任何函数。
提供的接口应该适用于大多数情况。
用法
通过Curses
句柄(传统上称为"win",意为"窗口")访问此crate。使用init
方法开始curses模式。丢弃结构体将自动结束curses模式。
注意: Curses模式是全局效应,尝试双重初始化curses将引发panic。此外,如果curses初始化失败,curses库本身将打印一条消息并终止您的进程。
use yacurses::*;
fn main() {
let mut win = Curses::init();
win.move_cursor(Position { x: 3, y: 2 });
win.print_str("demo message");
win.poll_events(); // by default, this blocks until an event comes in.
}
Panic Hook
默认的panic hook会在打印panic消息后继续执行。如果在curses模式下发生这种情况,curses模式将仅消耗该消息,您将无法看到错误所在。为了解决这个问题,当您开启yacurses时,它会安装一个自定义的panic hook,并在关闭时恢复之前的panic hook。这一切都是自动发生的。
副作用是,如果您也想有自己的panic hook,则可能会出现冲突。对此我们深感抱歉,对此我们无法做太多。