¡Hola Mundo!
Veamos cómo imprimir texto en la terminal. Cambie el programa de la sección anterior por el siguiente:
fn main() { print!("Hello, world!"); }
Si dicho código se compila y se ejecuta como antes, imprimirá: “¡Hola, mundo!”.
Observe que la línea recién agregada contiene ocho elementos de sintaxis, también conocidos como tokens. Analicémoslos:
print
: Es el nombre de una macro definida en la biblioteca estándar de Rust.!
: Este carácter especifica que el nombre precedente indica una macro. Sin este símbolo,print
indicaría una función. No existe dicha función en la biblioteca estándar de Rust, por lo que se obtendría un error de compilación. Una macro es similar a una función: es código de Rust con un nombre. Al usar este nombre, se solicita la inserción de dicho código en este punto. La principal diferencia entre una llamada a una función y una invocación de macro es que una llamada a una función ejecuta en tiempo de ejecución el código de la definición de la función, que se encuentra en otra parte del programa, por lo que el control de la ejecución se transfiere a otra parte, mientras que una invocación de macro solicita al compilador que reemplace la invocación de la macro con el cuerpo de la definición de la macro.(
: Inicia la lista de argumentos de la macro."
: Inicia la cadena literal.Hello, world!
: Es el contenido de la cadena literal."
: Finaliza la cadena literal.)
: Finaliza la lista de argumentos de la macro.;
: Concluye la declaración.
Examinemos el significado de la frase cadena literal. El término cadena significa secuencia finita de caracteres, que puede incluir espacios y puntuación. El término literal significa especificado directamente en el código fuente. Por lo tanto, una cadena literal es una secuencia finita de caracteres (que puede incluir espacios y puntuación) especificada directamente en el código fuente. Una cadena no literal, en cambio, es una variable cuyo valor en tiempo de ejecución es una cadena. Dicha cadena podría leerse desde un archivo, ser escrita por el usuario o copiarse de una cadena literal, como veremos al explicar las variables de cadena.
La macro print
simplemente inserta en el programa algún código que imprime en la terminal el texto que ha recibido como argumento.
Rust siempre distingue entre mayúsculas y minúsculas; distingue entre mayúsculas y minúsculas. Para todos los caracteres que se encuentran fuera de cadenas literales y comentarios, si se reemplaza una letra mayúscula por una minúscula, o viceversa, normalmente se obtiene un error de compilación o, en cualquier caso, un programa con un comportamiento diferente. En cambio, realizar estos cambios dentro de cadenas literales siempre permite una compilación exitosa, pero es probable que el comportamiento del programa sea diferente.
Por ejemplo:
fn Main() {}
Si compila este programa, obtendrá el error de compilación función principal no encontrada
, ya que no hay ninguna función principal
(con una m
minúscula) definida en el programa.
De ahora en adelante, excepto cuando se especifique, asumiremos que el código de ejemplo estará dentro de las llaves de la función main
, por lo que se omitirán las llaves y el texto que las precede.