如何清除stdout的当前行?

Nat*_*ara 7 rust

我正在尝试在Rust中创建一个打印到stdout的状态指示器.在其他语言中,我使用了一个函数来清除当前的stdout行,同时保持其他行不变.我似乎无法找到Rust等效物.有吗?这是我正在寻找的一个小例子

for i in 0..1000 {
    stdio::print(format!("{}", i).as_slice));
    stdio::clear();
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*gan 8

在ANSI终端上(几乎所有除Windows上的命令提示符之外的所有内容)\r都会将光标返回到当前行的开头,允许您在其上面写入其他内容(新内容或空格以删除您已编写的内容).

print!("\r")
Run Code Online (Sandbox Code Playgroud)

标准库中没有任何内容可以以平台中立的方式执行此操作.


小智 5

使用 ASCII 代码作为退格键是一种选择,例如:

print!("12345");
print!("{}", (8u8 as char));
Run Code Online (Sandbox Code Playgroud)

由于打印退格字符(ascii 代码 8),删除 5 后,最终将输出“1234”。奇怪的是,Rust 不将 \b 识别为有效的字符转义。

  • `\u{8}` 让你退格。Rust 不将 `\b` 识别为有效的转义符,这一点也不奇怪;尽管它很常见,但它并不是绝对标准的逃生方式之一。 (4认同)