Ownership y borrowing

Rust References and Borrowing

Let a function use a value without taking it: & to read, &mut to change.

  • Intermedio
  • 3 min de lectura
  • 1 ejemplo ejecutable
Lo que aprenderás
  • & and &mut
  • Borrowing in function calls
  • Many readers or one writer
Borrow → what it allows
length(&message)read only
add_exclamation(&mut message)can change it
let first = &messagemany readers are fine

Use a value without owning it

A reference lets code use a value without owning it. This is called borrowing. &value borrows for reading and &mut value borrows for changing.

length only reads the text, so it takes &str and message can still be used afterwards. add_exclamation needs &mut String to change it. Rust allows many readers at once or one writer, but never both, which rules out data races at compile time.

Puntos clave

  1. &value borrows for reading.
  2. &mut value borrows for changing.
  3. Many readers or one writer, never both.

Ejemplo ejecutable de Rust

Rust
Ejecutar código →
main.rs
fn length(text: &str) -> usize {
    text.len()
}

fn add_exclamation(text: &mut String) {
    text.push('!');
}

fn main() {
    let mut message = String::from("Borrow me");

    let size = length(&message); // immutable borrow
    println!("{message} has {size} bytes");

    add_exclamation(&mut message); // mutable borrow
    println!("{message}");

    let first = &message;
    let second = &message; // many readers are fine
    println!("{first} {second}");
}
Obtén un botón Run para este ejemplo Resultado de ejecutar el código
Borrow me has 9 bytes
Borrow me!
Borrow me! Borrow me!

Practica

Abre el ejemplo en el compilador online, cambia un valor o añade una línea y predice la salida antes de ejecutarlo. Después rompe el código a propósito y lee el mensaje del compilador.

¿Terminaste esta lección?

Márcala como aprendida para seguir tu progreso.

Siguiente: Slices →

Practica con un reto

Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.

Todos los retos