Aventuras en Rust

      No hay comentarios en Aventuras en Rust

En los pocos años transcurridos desde que salió Rust, con frecuencia me he encontrado explicando el increíble lenguaje que es Rust. Explicando las formas en las que va a cambiar el mundo de la programación de sistemas, y el placer que es codificar con Rust.

Affiliated Ad

Hace unos meses, finalmente pude probarlo. Fue horrible. El maldito borrow-checker no me dejaba hacer nada. No pude obtener nada significativo para compilar. A pesar de años de programación en varios idiomas, me sentí completamente incompetente para manejarlo. Decidí dejar a Rust y concentrarme en otras cosas.

A pesar de mi decepción y desánimo inicial, todavía no podía sacar a Rust de mi cabeza. Su premisa es demasiado prometedora para dejarla de lado después de una sola pasada. Además, ¡un lenguaje de programación no me puede ganar! Y, sin embargo, puede esperar. Es demasiado trabajo por ahora. Algún día, tal vez en unos años, escribiré Rust.

Sin embargo, usar Rust es una experiencia completamente diferente. Las herramientas de Rust son absolutamente increíbles. Como usuario de Windows de principio a fin, me acostumbré a que las herramientas de código abierto (especialmente las herramientas de línea de comandos) no sean compatibles con Windows. (No, cygwin no es una solución válida). No culpo a los desarrolladores, ellos trabajan en Linux. Incluso si tienen tiempo para dedicarlo a portar a Windows, no necesariamente tienen una máquina con Windows para probarlo. Y, además, estoy acostumbrado a decepcionarme. Por eso, cuando escuché por primera vez sobre rg (un increíble reemplazo de grep) y fd (un increíble reemplazo de búsqueda) supe que no funcionarían en Windows. Pero, siendo mi yo optimista, lo comprobé. Y menos mas que lo hice.

Para instalar herramientas Rust, la forma más sencilla es instalar el conjunto de herramientas Rust y compilarlas. Una tarea abrumadora en todos los demás languajes, pero muy fácil en Rust.

  • Dirígete a rustup.rs e instala Rust (una sola línea de comandos en Linux, un solo ejecutable en Windows)
  • cargo install ripgrep fd-find
  • Y ya está. Ya puedes usar las herramientas.

Fue entonces cuando me di cuenta de lo increíble que es Rust. Incluso si ignoras el lenguaje por completo, sus herramientas y la administración de paquetes no tienen comparación posible. Habiendo publicado paquetes de Python en el pasado, me sorprendieron los simples mecanismos de publicación e instalación. Habiendo usado C y C ++, simplemente me sorprendió una programación de sistemas con administración de paquetes. Entonces, aunque todavía estaba un poco asustadopor el borrow-checker, decidí que mi próxima herramienta CLI estará escrita en Rust.

Algunos meses después de eso, finalmente me encontré con la necesidad de una nueva herramienta CLI. Me enfrenté a un logcontinuo que quería filtrar en busca de duplicados. sort -u ordena, por lo que no puede funcionar en transmisiones. Por supuesto, probablemente haya algo de magia del tipo sed o awk que pueda usar, pero quiero algo simple. Además, una herramienta que filtra los duplicados parece el proyecto perfecto para principiantes para ponerse manos a la obra con Rust. Así que seguí adelante y creé uq. Después de terminarlo, lo publiqué en crates.io. cargo install uq en una segunda máquina, y funcionó. Tanto Windows como Linux. Un amigo lo probó, ¡y simplemente funcionó! Nunca tuve una experiencia de implementación tan agradable. ¡Es prácticamente más fácil de instalar desde la fuente que enviar un binario compilado! Y funciona en multiplataforma desde el primer momento.

Poco tiempo después, quise agrupar algunas entradas de registro por una expresión regular. Miré a mi alrededor y no pude encontrar una forma sencilla de hacerlo. Entonces, una vez más, me volví hacia Rust. Más tarde, después de un poco de lucha, se completó la primera versión de groupby. ¡Hurra!

Poco tiempo después tuve una de las mejores experiencias de código abierto que he tenido. Alguien comenzó a usar groupby, miró mi terrible código y publicó este problema (en inglés):

https://github.com/lostutils/groupby/issues/1

Que alguien con más experiencia en Rust viniera y me ayudara a mejorar mi código muy ingenuo fue genial. Y fue la primera vez que obtuve un «esto es genial, ¿puedo ayudarlo?» comentario y no un «esto es genial, yo también quiero esto».

Por el momento, sigo pasando más tiempo luchando con borrow-checker que escribiendo código real en Rust. Pero estoy (casi) seguro de que se debe a la falta de experiencia. En el lado positivo, también estoy mejorando en la detección de problemas de por vida en otros idiomas.

Entonces, para cualquiera que aún no lo haya hecho, recomiendo encarecidamente usar herramientas basadas en Rust. Solo por la increíble experiencia de que las cosas funcionen (¡y se compilen!) desde el inicio. Más tarde, si eliges usarlo, asegúrete de prepararte para un viaje un tanto accidentado. Los amigos me dicen que después de un tiempo, Rust se vuelve más fácil, acelerando su desarrollo. Todavía no he llegado, pero estoy trabajando en ello.

Puedes leer el artículo original en inglés en https://dev.to/tmr232/adventures-in-rust-56fc

Deja un comentario

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