Rullst AcademyRullst Academy/Lección
Rust II: datos, decisiones y confianza · Lección 01 / 12

¿Quién es dueño del valor?

Una etiqueta pasa a otra mesa. En Rust, asignar un String puede transferir su propiedad; no copia automáticamente el texto.

Rutas de aprendizaje12 min

Vamos a descubrir juntos

  1. 1

    Esta ruta continúa variables, condiciones y funciones de Rust I. Repasa esa base si hace falta; Python no es obligatorio. Prepara Rust/Cargo con la ruta de tu sistema y comprueba rustc --version y cargo --version.

  2. 2

    String::from crea texto con propiedad. let second = first mueve ese valor: second pasa a ser el dueño y first ya no se puede usar. Al salir de su ámbito, el dueño libera el recurso.

  3. 3

    first.clone() crea otro String con contenido independiente. Tiene un coste: copia cuando necesites otra propiedad, no solo para silenciar el compilador. Enteros como u32 implementan Copy; asignarlos mantiene utilizables ambos nombres.

  4. 4

    En el escenario 1, cambiar second no cambia first. El escenario 2 intenta leer first tras moverlo: la compilación falla antes de ejecutar. Lee tanto el lugar del movimiento como el del uso en el diagnóstico.

DE LA LECCIÓN A LA PRÁCTICA

Una guía para seguir a tu ritmo

Lee los pasos antes de usar la referencia de abajo. Los comandos se ejecutan en el terminal del sistema indicado; el registro ocurre en el sitio oficial. Los ejercicios de Rullst Academy son práctica y no verifican tu instalación ni cuenta externa.

fn main() {
    let first = String::from("Tico");
    let mut second = first.clone();
    second.push_str("!");
    println!("{} {}", first.len(), second.len());
}

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Distinguir move, Copy y clone; interpretar un uso tras mover.

Ahora te toca

Taller de descubrimientos

Lee, predice, investiga

Predice antes de mostrar. Este panel revela resultados preparados; no compila tu código. Los errores se resumen; el texto exacto puede variar con la versión del compilador.
Mini experimento

Simulación didáctica: compara tarjetas y comprueba tus predicciones. El navegador no compila Rust ni inicia un servidor.

fn main() {
    let first = String::from("Tico");
    let mut second = first.clone();
    second.push_str("!");
    println!("{} {}", first.len(), second.len());
}
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿Cuándo está justificado clone?

Necesito una pista

Mover y copiar son operaciones distintas; clone duplica el contenido de String.

Cargando tu camino…

Llévatelo contigo

Ejecuta el escenario 1 en src/main.rs. Cambia first.clone() por first y ejecuta cargo check. Explica el error y restaura la versión válida; registra por qué era necesaria la copia aquí.

RUST II · .rs

Tu espacio de práctica Rust II

Lee, predice y responde aquí. Para compilar realmente, extrae el ZIP en una carpeta nueva, abre la terminal junto a Cargo.toml y usa estos comandos. Debes tener instalados Rust y las herramientas de tu sistema.

cargo check --offline
cargo test --offline
cargo run --offline
Mis archivos y GitHub

El editor guarda un borrador en este navegador y permite descargar o publicar tu .rs. Para ejecutarlo en el proyecto, guarda el archivo editado como src/main.rs. El ZIP contiene la versión inicial; los resultados preparados no cambian con tus ediciones. La evaluación online no verifica ejecución local.

A tu ritmo

Mis archivos y GitHub

Cada lección puede convertirse en un registro propio: código, notas o un plan de práctica. Guardar un archivo en GitHub es opcional y no cambia tus XP.

Manual del alumno

El editor y las descargas se abren cuando esta lección esté disponible para tu cuenta. Revisa el acceso indicado abajo o vuelve al mapa de la ruta.

Comprobando tu acceso a esta lección…

Rullstpetbot

La IA puede equivocarse. Consulta el material de la lección.