Saltar al contenido

Dos nombres, ¿dos dueños?

Rust
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.