DEV Community

Jorge Brunal Pérez
Jorge Brunal Pérez

Posted on

Limpiar la pantalla en Rust

Publicado originalmente (2021-10-11) en mi sitio web.

Muchas maneras, el mismo efecto?

Mientras desarrollamos una aplicación que utiliza la línea de comandos, una de las tareas más triviales y necesaria (en muchos casos) es limpiar la pantalla....

Rust provee un par de opciones para tal fin.

Utilizando std:

use std::process;

fn clear_screen() {
    process::Command::new("clear").status().unwrap();    
}
Enter fullscreen mode Exit fullscreen mode

funciona muy bien en sistemas Gnu/Linux y Mac OS.

En sistemas Windows, basta con cambiar "clear" por "cls"

 

Usando códigos de escape ANSI.

Todos los códigos de escape comienzan por los caracteres ESC (carácter ASCII número 27 decimal, 1B en hexadecimal) seguido del carácter [, tienen cero o más parámetros delimitados por ;

ejemplo:

fn clear_screen() {
    print!("\x1B[2J");
}
Enter fullscreen mode Exit fullscreen mode

 

Una variante del anterior, que posiciona el cursor en la fila 0, columna 0.

fn clear_screen() {
    print!("\x1B[2J \x1B[0;0f");
}
Enter fullscreen mode Exit fullscreen mode

 
Otro ejemplo casteando el número 27 como char.

fn clear_screen() {
    print!("{}[2J", 27 as char);
}
Enter fullscreen mode Exit fullscreen mode

 
Donde:

  • '\x1B' es el código de escape, que indica que lo que sigue es una secuencia de control.
  • '[' indica el comienzo de una secuencia de control.
  • '2' indica el tipo de secuencia de control. En este caso, '2' indica que la pantalla debe ser borrada.
  • 'J' indica cómo se borrará la pantalla. En este caso, 'J' indica que se borrará todo el contenido de la pantalla.

 

Referencias

Top comments (0)