Rust-Script, ejecuta Rust en script en Linux

¿Alguna vez has deseado ejecutar código Rust de manera rápida y sencilla, como si estuvieras utilizando un script de shell o Python? Pues déjame presentarte a rust-script, una herramienta increíblemente útil que te permite hacer exactamente eso. En este artículo, te guiaré a través de la instalación, configuración y uso de rust-script en Linux, para que puedas comenzar a aprovechar todo su potencial.

Rust es un lenguaje de programación moderno y de alto rendimiento que se ha ganado rápidamente una gran popularidad entre los desarrolladores. Una de las fortalezas de Rust es su enfoque en la seguridad y la concurrencia, lo que lo convierte en una excelente elección para aplicaciones de alto rendimiento y sistemas críticos.

Sin embargo, a veces solo necesitamos escribir un código rápido y ejecutarlo sin tener que pasar por todo el proceso de compilación y construcción típico de Rust. Es en este punto donde entra en juego rust-script. Con esta herramienta, puedes ejecutar archivos y expresiones de Rust de manera rápida y sencilla, sin necesidad de compilar todo un proyecto.

Rust-Script, ejecuta Rust en script en Linux

Instalación

Antes de sumergirnos en el emocionante mundo de rust-script, necesitamos asegurarnos de tenerlo instalado en nuestro sistema Linux. Afortunadamente, la instalación es muy sencilla. Solo necesitas seguir estos pasos:

  1. Abre una terminal en tu sistema Linux.
  2. Asegúrate de tener instalado Cargo, el gestor de paquetes de Rust. Si no lo tienes instalado, puedes obtenerlo siguiendo las instrucciones en la página oficial de Rust (https://www.rust-lang.org/tools/install).
  3. Ejecuta el siguiente comando en la terminal para instalar rust-script utilizando Cargo:
cargo install rust-script

¡Y eso es todo! Rust-script debería instalarse correctamente en tu sistema Linux.

Configuración y Personalización

Una vez que tienes rust-script instalado, puedes comenzar a utilizarlo de inmediato. Sin embargo, es posible que desees personalizar algunas opciones para adaptar la herramienta a tus necesidades específicas. A continuación, te mostraré cómo puedes hacerlo.

Scripts Ejecutables

En primer lugar, es posible que desees utilizar rust-script para ejecutar scripts de Rust directamente, sin necesidad de especificar explícitamente el intérprete de Rust. Para lograr esto, puedes agregar una línea de shebang al principio de tus scripts de Rust. En sistemas Unix, la línea de shebang sería la siguiente:

#!/usr/bin/env rust-script

De esta manera, puedes ejecutar tus scripts de Rust sin tener que llamar a rust-script explícitamente cada vez. Simplemente ejecuta el script como cualquier otro archivo ejecutable.

Si estás utilizando Windows, puedes asociar la extensión de archivo .ers (Rust ejecutable, un archivo .rs renombrado) con rust-script. Esto te permitirá ejecutar tus scripts de Rust simplemente nombrándolos como cualquier otro archivo ejecutable o script. Puedes hacerlo utilizando el comando rust-script --install-file-association. Si en algún momento deseas deshacer la asociación de archivos, puedes utilizar rust-script --uninstall -file-association.

Expresiones

Otro caso de uso interesante de rust-script es la evaluación de expresiones de Rust directamente desde la línea de comandos. Puedes utilizar la opción -e o --expr seguida de la expresión que deseas evaluar. Por ejemplo:

rust-script -e '1+2'

Esto imprimirá el resultado de la expresión 1+2 en la salida estándar.

Si tu expresión de Rust requiere dependencias adicionales, puedes agregarlas utilizando la opción -d o --dep. Por ejemplo:

rust-script --dep time --expr "time::OffsetDateTime::now_utc().format(time::Format::Rfc3339).to_string()"

En este caso, estamos utilizando la biblioteca time para obtener la fecha y hora actual en formato RFC3339.

También es posible especificar una versión específica de una dependencia utilizando la sintaxis nombre_depaquete=versión. Por ejemplo:

rust-script --dep time=0.1.38 -e "time::now().rfc822z().to_string()"

Esto utilizará la versión 0.1.38 de la biblioteca time en lugar de la última versión disponible.

Filtros

Además de ejecutar scripts y evaluar expresiones, rust-script también puede actuar como un filtro de flujo. Esto significa que puedes utilizarlo en una cadena de comandos para procesar datos línea por línea. Por ejemplo:

cat archivo.ers | rust-script --loop \
    "let mut n=0; move |l| {n+=1; println!(\"{:>6}: {}\",n,l.trim_end())}"

En este ejemplo, estamos leyendo líneas del archivo archivo.ers y aplicando un filtro a cada línea. El filtro simplemente agrega un número de línea al principio de cada línea.

También puedes lograr un efecto similar utilizando la opción --count, que pasa el número de línea como segundo argumento a tu función de filtro. Por ejemplo:

cat archivo.ers | rust-script --count --loop \
    "|l,n| println!(\"{:>6}: {}\", n, l.trim_end())"

Ambos enfoques son útiles según tus necesidades y preferencias.

Ejemplos de Uso y Funcionamiento

Ahora que tenemos una idea de cómo configurar y utilizar rust-script, veamos algunos ejemplos de uso práctico.

Ejecución de un Script de Rust

Supongamos que tenemos un archivo hola.rs con el siguiente contenido:

println!("¡Hola, mundo desde Rust!");

Podemos ejecutar este script utilizando rust-script de la siguiente manera:

rust-script hola.rs
#!/usr/bin/env rust-script
//!
//!```cargo
//![dependencies]
//!regex = "1"
//!```

fn main(){
    println!("Hola");
    let text = r#"Esto es una "prueba" buen donde cambio "las comillas" por cursivas"#;
    let re = regex::Regex::new(r#""([^"]*)""#).unwrap();
    println!("{}", re.replace_all(text, "<i>$1</i>"));
}

Esto imprimirá «¡Hola, mundo desde Rust!» en la salida estándar.

Evaluación de Expresiones de Rust

Digamos que queremos calcular la suma de dos números utilizando rust-script. Podemos hacerlo ejecutando el siguiente comando:

rust-script -e '2 + 3'

El resultado, en este caso, será 5.

Filtrado de Flujo

Imaginemos que tenemos un archivo llamado datos.txt con varias líneas de texto. Queremos imprimir solo las líneas que contienen la palabra «Rust». Podemos lograrlo utilizando rust-script de la siguiente manera:

cat datos.txt | rust-script --loop \
    "

move |linea| { if linea.contains(\"Rust\") { println!(\"{}\", linea); } }"

Esto imprimirá todas las líneas del archivo datos.txt que contengan la palabra «Rust».

El vídeo

A continuación lo mismo pero en formato vídeo,

Conclusiones

Rust-script es una herramienta útil para ejecutar scripts y evaluar expresiones de Rust de forma rápida y sencilla. Puede ser utilizado para automatizar tareas, procesar datos y prototipar ideas rápidamente.

Su integración con Cargo permite manejar dependencias y proyectos más complejos, lo cual es especialmente útil cuando se trabaja en proyectos de Rust a gran escala.

Si eres un entusiasta de Rust o simplemente quieres explorar un enfoque diferente para escribir scripts y expresiones de programación, te recomiendo que pruebes rust-script. ¡Puede que te sorprenda gratamente!


Referencias:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *