Rust:如何覆盖控制台输出?

问题描述 投票:2回答:1

曾经四处张望,但似乎找不到一个好的答案。

使用Rust,有一种方法可以覆盖控制台输出,而不是简单地追加?

一个例子是打印进度百分比,我宁愿覆盖该行,然后简单地打印新行。

rust
1个回答
2
投票

通常通过打印出“控制字符”来控制控制台。但是它们取决于平台和终端类型。您可能不想重新发明轮子来做到这一点。

您可以使用crossterm crate获得这种控制台控件。一个简单的例子是:

use std::{thread, time};
use std::io::{Write, stdout};
use crossterm::{QueueableCommand, cursor};

fn main() {

    let mut stdout = stdout();

    for i in 1..10 {
        stdout.queue(cursor::SavePosition);
        stdout.write(format!("Here!!! {}", i).as_bytes());
        stdout.queue(cursor::RestorePosition);
        stdout.flush();
        thread::sleep(time::Duration::from_millis(500));
    }

    println!("Hello, world!");
}
热门问题
推荐问题
最新问题