曾经四处张望,但似乎找不到一个好的答案。
使用Rust,有一种方法可以覆盖控制台输出,而不是简单地追加?
一个例子是打印进度百分比,我宁愿覆盖该行,然后简单地打印新行。
通常通过打印出“控制字符”来控制控制台。但是它们取决于平台和终端类型。您可能不想重新发明轮子来做到这一点。
您可以使用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!");
}