Rust: Как перезаписать вывод консоли? - PullRequest
2 голосов
/ 24 января 2020

Оглядываясь вокруг, но не могу найти хорошего ответа.

Используя Rust, есть ли способ перезаписать вывод консоли вместо простого добавления?

Примером может служить процесс печати в процентах, я бы лучше переписал строку, чем просто напечатал новую строку.

1 Ответ

2 голосов
/ 24 января 2020

Консоли обычно управляются распечаткой «управляющих символов». Но что это такое, зависит от платформы и типа терминала. Вы, вероятно, не хотите заново изобретать колесо, чтобы сделать это.

Вы можете использовать сквозной ящик , чтобы получить этот вид управления консоли. Простой пример:

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!");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...