在 Rust 中获取控制台宽度

Tim*_*imB 9 console rust

当对输出进行换行以使其在视觉上令人愉悦时,了解控制台窗口或至少了解缓冲区宽度会很有帮助。

有如何在CC++中执行此操作的答案,C# 甚至具有使此任务变得容易的属性。但是铁锈呢?

我可以使用什么来获取此信息,还是应该让用户决定我的程序将输出包装在哪里?

sam*_*mpi 9

有多个板条箱能够确定终端宽度。使用哪一种可能取决于每种情况的确切相关要求。一个好的起点可能是检查termion,它还提供了许多其他有用的低级终端处理功能。

从上面的链接页面可以看出,它支持多个平台。然而,任何使用 Microsoft Windows 的人都应该注意,他们的平台没有被提及:

还有termsize crate,其目的无非是确定终端大小。该板条箱具有更广泛的平台支持,并且可以与 Microsoft Windows 配合使用。

更新依赖关系后Cargo.toml,使用这两个板条箱检索终端宽度(和高度)非常简单:

fn main() {
    let (x, y) = termion::terminal_size().unwrap();
    let termsize::Size {rows, cols} = termsize::get().unwrap();
    println!("          width  height");
    println!("termion:  {:4}    {:4}", x, y);
    println!("termsize: {:4}    {:4}", cols, rows);
}
Run Code Online (Sandbox Code Playgroud)