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

乔纳森·伍利特

一直在环顾四周,但似乎找不到很好的答案。

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

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

迈克尔·安德森

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

您可以使用交叉项板条箱来获得这种控制台控件。一个简单的例子是:

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!");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章