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 命令行界面

Download history 17/week @ 2024-07-01 17/week @ 2024-07-29 114/week @ 2024-08-12

131 每月下载量

Zlib OR Apache-2.0 OR MIT

405KB
8K SLoC

C 7.5K SLoC // 0.3% comments Rust 741 SLoC // 0.1% comments Shell 16 SLoC

License:Zlib Minimum Rust Version crates.io docs.rs

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,则可能会出现冲突。对此我们深感抱歉,对此我们无法做太多。

无运行时依赖