Translate

martes, 10 de octubre de 2023

Monomorfización en Rust


El código genérico se convierte en código no genérico según los sitios de llamadas:


fn main() {

    let integer = Some(5);

    let float = Some(5.0);

}

se comporta como si escribieras


enum Option_i32 {

    Some(i32),

    None,

}


enum Option_f64 {

    Some(f64),

    None,

}


fn main() {

    let integer = Option_i32::Some(5);

    let float = Option_f64::Some(5.0);

}


Esta es una abstracción de costo cero: obtienes exactamente el mismo resultado que si hubieras codificado manualmente las estructuras de datos sin la abstracción.