Japp
Aprendiendo Rust después de veinte años con PHP y JS

Aprendiendo Rust después de veinte años con PHP y JS

El borrow checker de Rust me ha hecho sentir principiante otra vez, y no es tan mala sensación como esperaba.

PHP y JavaScript son lenguajes generosos. Te dejan hacer cosas raras con el tipo de un valor, gestionan la memoria por ti sin preguntarte nada, y si algo va mal normalmente se entera el usuario en producción, no tú en el editor. Después de veinte años ahí, empezar con Rust ha sido el golpe de humildad que no sabía que necesitaba.

El borrow checker no es tu enemigo, aunque lo parezca

Las primeras dos semanas las pasé discutiendo con el compilador más que escribiendo lógica de verdad. El borrow checker — el sistema que vigila quién es dueño de cada dato y durante cuánto tiempo puede usarse — rechazaba código que a mis ojos parecía perfectamente razonable. Le pasaba una variable a una función y luego el compilador me decía que ya no podía volver a usarla, como si la función se la hubiera quedado para siempre.

Lo que tardé en entender es que el compilador no me estaba fastidiando: me estaba señalando, en tiempo de compilación, exactamente el tipo de error que en JavaScript se manifiesta como un bug esquivo tres semanas después, en producción, y que nadie sabe reproducir. Cambiar el chip de “esto compila luego arreglo lo que falle” a “si compila, es que ya está bastante bien” me costó, pero cuando lo interiorizas, cambia cómo piensas el código incluso cuando vuelves a JavaScript.

Por qué ahora y por qué Rust

La motivación concreta fue Tauri, el framework que uso para Facturapp: la parte nativa corre en Rust, y hasta ahora me limitaba a copiar y pegar lo justo para que compilara. Quería entender de verdad lo que estaba tocando en vez de tratarlo como una caja negra.

Dónde estoy ahora

Nada de proyectos grandes todavía. Ejercicios pequeños, algún comando de terminal propio para sustituir scripts que antes hacía en Node, y mucha, mucha lectura del libro oficial. No sé si Rust se convertirá en un lenguaje que uso a diario, pero el ejercicio de pensar en propiedad y tiempo de vida de los datos ya está cambiando cómo escribo código en todo lo demás — hasta en un componente de Svelte me paro ahora a pensar quién “es dueño” de un estado antes de repartirlo entre tres sitios distintos.

¿Salir sin guardar?

Tienes cambios sin guardar en este formulario. Si sales ahora, se perderán.

esen