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

Prestar para leer y cambiar

Una función puede consultar o actualizar una etiqueta sin quedarse con ella. Su firma muestra qué permiso solicita.

Rutas de aprendizaje12 min

Vamos a descubrir juntos

  1. 1

    Una referencia & permite acceder a un valor sin tomar su propiedad. Una función que solo lee texto puede recibir &str; &name convierte el préstamo de String cuando hace falta.

  2. 2

    &mut String permite cambiar ese String. Tanto la variable original como el préstamo deben permitir mutación. text.push_str no necesita * explícito porque la llamada al método resuelve la referencia.

  3. 3

    Las referencias compartidas al mismo valor pueden coexistir; un préstamo mutable exige acceso exclusivo mientras se usa. El escenario 2 mantiene una referencia de lectura hasta después del cambio.

  4. 4

    En muchos casos el compilador termina el préstamo tras su último uso, antes de la llave final. Separar lectura y escritura ayuda más que añadir clone sin entender el conflicto.

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 length(text: &str) -> usize { text.len() }
fn mark(text: &mut String) { text.push_str("!"); }
fn main() {
    let mut name = String::from("Tico");
    println!("{}", length(&name));
    mark(&mut name);
    println!("{}", length(&name));
}

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Usar &str y &mut String y reconocer préstamos incompatibles.

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 length(text: &str) -> usize { text.len() }
fn mark(text: &mut String) { text.push_str("!"); }
fn main() {
    let mut name = String::from("Tico");
    println!("{}", length(&name));
    mark(&mut name);
    println!("{}", length(&name));
}
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿Qué contrato permite cambiar el String prestado?

Necesito una pista

&mut comunica acceso mutable exclusivo mientras se usa el préstamo.

Cargando tu camino…

Llévatelo contigo

Mueve println!("{view}") antes de name.push_str en el escenario 2. Compila y explica por qué importa el orden de uso. Crea una función que añada dos signos y comprueba el tamaño.

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.