我希望使用 Rust 中名为“pancurses”的诅咒库开发一个跨平台 CUI,但我在 Windows 中遇到了一个奇怪的问题。由于某种原因,某些新的终端仿真器不是在当前终端仿真器(即 cmd)中运行 CUI,而是打开并运行 CUI,而 stdout 则定向到当前终端。例如,这与我在 python 中的 windows-curses 库中看到的不同,因此我怀疑这是 pancurses、pdcurses 或 rust 编译器中的某种配置选项,但我找不到任何文档这似乎相关。任何帮助表示赞赏。
编辑以包含最小可重现示例(使用 pancurses 0.17):
extern crate pancurses;
use pancurses::{initscr, noecho};
fn main() {
let window = initscr();
window.refresh();
window.keypad(true);
noecho();
window.getch();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
pancurses构建于Linux 上的ncurses-rs和 Windows 上的pdcurses-sys之上。
正如pdcurses-sys 和 pancurses 的README中提到的:
PDCurses (Windows) 详细信息
pdcurses-sys 支持两种类型的 PDCurses:win32a 和 win32。win32a是GDI模式,而win32在Windows控制台中运行。win32a 对颜色和文本效果有更好的支持。
要为 pancurses 启用 win32 功能,您可以使用以下命令在 Cargo.toml 文件中配置功能:
$ cargo add pancurses --features win32
Run Code Online (Sandbox Code Playgroud)
或者将其添加到您的 Cargo.toml 中:
[dependencies]
pancurses = { version = "0.17.0", features = ["win32"] }
Run Code Online (Sandbox Code Playgroud)