Un semáforo que está en rojo y verde a la vez. Un usuario que está logueado y deslogueado simultáneamente. Los flags booleanos hacen estos estados absurdos perfectamente representables, y ese es el problema.
La comunidad de Rust convirtió .clone() en un pecado moral. Ese dogma es tan peligroso como la incapacidad del Consejo Jedi para adaptarse. Ponemos la culpa bajo el microscopio: los números reales de rendimiento, el lint de clippy que la refuerza y la teoría de tipos que explica por qué Rust hace visible la duplicación.
Move, borrow, clone, Rc, Arc, Cow. Rust te da seis formas de sable laser para el ownership. Cada una contrarresta una amenaza concreta. Usar la forma equivocada contra el oponente equivocado no es solo inelegante, es fatal. Mapeamos cada estrategia a las situaciones donde brilla y donde falla catastroficamente.
La comunidad Rust trata .clone() como un code smell. A veces lo es. Pero la mayoría de las veces, el instinto de evitarlo cuesta más en complejidad de lo que el clone cuesta en nanosegundos. Diseccionamos qué hace clone realmente para cada tipo común, el espectro real de costes a lo largo de seis órdenes de magnitud, y por qué Clone y Copy no son la misma conversación.
Cada trait en tu arquitectura hexagonal es un algebra tagless-final. Cada impl es un interprete. Has estado escribiendo semantica denotacional sin saberlo. Trazamos la conexion desde el paper de Kiselyov a traves de Cats-Effect de Scala hasta los port traits de Rust, y mostramos por que el patron que los academicos llaman ‘finally tagless’ es el mismo patron que los practicantes llaman ‘inyeccion de dependencias.’
La rata sirve el último plato. Corregimos el lag de entrada con polling de eventos no bloqueante, añadimos la funcionalidad de edición como un corte vertical completo desde la capa de aplicación hasta la TUI, observamos la máquina de estados crecer de 3 a 4 variantes con seguridad guiada por el compilador, y cerramos con las conclusiones clave de toda la migración.
La rata aprende a emplatar. Cinco mejoras de UX transforman un prototipo monocromático en una herramienta escaneable y responsiva: codificación por colores, feedback positivo, guía de estado vacío, mensajes transitorios y un cursor visual. Después sustituimos la entrada de texto en la barra de comandos por un popup modal centrado.
La rata conecta los oídos. Implementamos manejadores de eventos por modo con crossterm, rediseñamos el mapeo de teclas para usar un toggle en vez de teclas separadas, resolvemos el problema de restauración de terminal con un patrón de captura-limpieza-retorno, y ejecutamos cargo test para descubrir que cero líneas cambiaron fuera del adaptador.