Rust的pancurses库正在打开一个新的终端,而不是在当前终端中运行

yqyhoc1h  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(77)

我希望使用Rust中名为“pancurses”的curses库开发一个跨平台CUI,但我在Windows中遇到了一个奇怪的问题。出于某种原因,不是在当前终端仿真器中运行CUI(即cmd)时,某个新的终端仿真程序正在打开并运行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();
}

字符串
这将生成一个类似于下面的终端:x1c 0d1x的数据

qoefvg9y

qoefvg9y1#

pancurses构建于Linux上的ncurses-rs和Windows上的pdcurses-sys之上。“
正如pdcurses-sys和pancurses的自述文件中所述:

PDCurs(Windows)详细信息

pdcurses-sys支持两种类型的PDCurses,即win 32a和win32。win 32a是GDI模式,而win32在Windows控制台中运行。win 32a对颜色和文本效果有更好的支持。
要为pancurses启用win32功能,可以通过使用以下命令在Cargo.toml文件中配置一个功能:

$ cargo add pancurses --features win32

字符串
或者将其添加到您的Cargo中。toml:

[dependencies]
pancurses = { version = "0.17.0", features = ["win32"] }

相关问题