Fenómeno
Dos nombres, ¿dos dueños?
let s = String::from("mapa");let t = s;// println!("{s}"); // ¿por qué Rust rechaza este uso?println!("{t}");Imagina que ambos nombres pudieran liberar el mismo buffer al terminar su ámbito. ¿Cómo evitarías una doble liberación? Rust transfiere la responsabilidad a t: el nombre s deja de poder usarse después del movimiento.
No se ha clonado el texto. La asignación cambia quién posee el valor. Antes de continuar, predice cuántos buffers hay y qué variable los libera.
Este tema usa String, que no implementa Copy. No generalices la regla a un entero: asignar un u32 sí permite seguir usando ambos nombres.
¿Qué debería ocurrir con s cuando su valor pasa a t? Escribe tu predicción; no se califica.