W Rust referencje nigdy nie mogą być zerowe, więc w przypadku, gdy faktycznie potrzebujesz null, na przykład listy połączonej, użyj Option
typu:
struct Element {
value: i32,
next: Option<Box<Element>>,
}
Ile narzutu wiąże się z tym, jeśli chodzi o alokację pamięci i kroki do wyłuskiwania w porównaniu do prostego wskaźnika? Czy w kompilatorze / środowisku uruchomieniowym jest jakaś „magia”, aby uczynić ją Option
bezkosztową lub mniej kosztowną, niż gdyby ktoś miał zaimplementować Option
ją samodzielnie w bibliotece innej niż podstawowa przy użyciu tej samej enum
konstrukcji lub zawijając wskaźnik w wektorze?
źródło
Option
wyliczeniach typu „ -”, więc będzie działać również dla wyliczeń zdefiniowanych przez użytkownikaOption
.Result<i32, i32>
, zobaczysz, że optymalizacja zostanie zastosowana ponownie.