Rust: salida a la línea de comandos

Antes de aprender formalmente el lenguaje Rust, necesitamos aprender primero cómo imprimir texto en la línea de comandos. Esta es casi una habilidad imprescindible antes de aprender cualquier lenguaje, porque imprimir en la línea de comandos es casi la única forma en que los programas expresan resultados durante la fase de aprendizaje del lenguaje.

En el programa Hello, World anterior, ya se mostró aproximadamente la forma de generar cadenas, pero no es completa. Quizás te preguntes por qué después de println en println!("Hello World") hay además un!símbolo. ¿Acaso todas las funciones de Rust llevan un signo de exclamación? Claramente no es así. println no es una función, sino una regla de macro. Aquí no es necesario profundizar en qué es una regla de macro; se presentará específicamente en capítulos posteriores, y no afecta el siguiente tramo de estudio.

Las principales formas de generar texto en Rust son dos:println!()yprint!(). Estas dos «funciones» son métodos para generar cadenas en la línea de comandos; la única diferencia es que el primero añade un carácter de nueva línea al final de la salida. Cuando se usan estas dos «funciones» para generar información, el primer parámetro es la cadena de formato, seguido de una serie de parámetros variables que corresponden a los «marcadores de posición» en la cadena de formato. Esto es muy similar a la función printf del lenguaje C. Sin embargo, los marcadores de posición en la cadena de formato de Rust no son"% + letra"de la forma, sino un par de{}。

Ejemplo: archivo ejemplo.rs

fn main() {
    let a = 12;
    println!("a is {}", a);
}

Userustcel comando para compilar el archivo ejemplo.rs:

$ rustc ejemplo.rs   # 编译 ejemplo.rs 文件

Después de compilar, se generaráejemploarchivo ejecutable:

$ ./ejemplo    # 执行 ejemplo

El resultado de salida del programa anterior es:

a is 12 

Si quiero imprimir a dos veces, ¿no tendría que escribirse así:

println!("a is {}, a again is {}", a, a); 

En realidad, hay una mejor forma de escribirlo:

println!("a is {0}, a again is {0}", a); 

En{}Entre ellos se puede poner un número, que tratará los parámetros variables posteriores como un array, con el índice comenzando en 0.

Si se quiere generar{o}¿qué se hace? En la cadena de formato, mediante{{y}}se escapan respectivamente para representar { y }. Pero los demás caracteres de escape comunes son iguales que los del lenguaje C, todos tienen la forma de comenzar con una barra invertida.

fn main() { 
    println!("{{}}"); 
} 

El resultado de salida del programa anterior es:

{}
Otras extensiones