En Rust, las referencias nunca pueden ser nulas, por lo que en caso de que realmente necesite un valor nulo, como una lista vinculada, use el Option
tipo:
struct Element {
value: i32,
next: Option<Box<Element>>,
}
¿Cuánta sobrecarga implica esto en términos de asignación de memoria y pasos para desreferenciar en comparación con un puntero simple? ¿Hay algo de "magia" en el compilador / tiempo de ejecución para hacer que Option
sea gratis o menos costoso que si uno lo implementara Option
uno mismo en una biblioteca no central usando la misma enum
construcción o envolviendo el puntero en un vector?
fuente
Option
enumeraciones " similares", por lo que también funcionará para un archivoOption
.Result<i32, i32>
, puedes ver que la optimización se aplica nuevamente.