typestar

Closures move en Rust

Un hilo sobrevive al marco de pila de quien llama; debe ser dueño de lo que captura.

use std::thread;

fn main() {
    let words = vec!["ada".to_string(), "grace".to_string()];
    let mut handles = Vec::new();

    for word in words {
        handles.push(thread::spawn(move || {
            format!("{} has {} letters", word, word.len())
        }));
    }

    for handle in handles {
        println!("{}", handle.join().unwrap());
    }
}

Cómo funciona

  1. move transfiere los valores capturados al closure.
  2. Sin él, el borrow checker rechaza el spawn.
  3. Cada hilo recibe su propia copia o su propio valor.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
298
Tokens
102
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 61 segundos.

Escribe este fragmento

Paso 2 de 3 en Hilos; paso 2 de 15 en Concurrencia y async.

← Anterior Siguiente →