typestar

Box y tipos recursivos en Rust

Asignación en el heap que le da tamaño conocido a un enum recursivo.

enum List {
    Cons(i32, Box<List>),
    Nil,
}

fn sum(list: &List) -> i32 {
    match list {
        List::Cons(v, rest) => v + sum(rest),
        List::Nil => 0,
    }
}

fn main() {
    let list = List::Cons(1, Box::new(List::Cons(2, Box::new(List::Nil))));
    println!("{}", sum(&list));
}

Cómo funciona

  1. Box<List> le da un tamaño conocido a la variante recursiva.
  2. match recorre la lista cons para sumarla.
  3. Box::new mueve un valor al heap.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
256
Tokens
106
Ritmo de tres estrellas
100 tpm

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

Escribe este fragmento

Paso 1 de 2 en Punteros inteligentes; paso 13 de 15 en Propiedad y préstamos.

← Anterior Siguiente →