Option
Ми вже бачили деяке використання Option<T>
. Це зберігає або значення типу T
, або нічого. Наприклад, String::find
повертає Option<usize>
.
Speaker Notes
This slide should take about 10 minutes.
-
Option
широко використовуються, і не тільки в стандартній бібліотеці. -
unwrap
поверне значення вOption
, або паніку.expect
працює аналогічно, але повертає повідомлення про помилку.- Ви можете панікувати на None, але ви не можете “випадково” забути перевірити на None.
- Під час швидкої експерементації зазвичай прийнято використовувати
unwrap
/expect
повсюди, але у виробничому кодіNone
зазвичай обробляється у більш зручному вигляді.
-
“Нішова оптимізація” означає, що
Option<T>
часто має той самий розмір у пам’яті, що йT
, якщо є деяке представлення, яке не є допустимим значенням T. Наприклад, посилання не може бути NULL, томуOption<&T>
автоматично використовує NULL для представлення варіантуNone
, і таким чином може зберігатися у тій самій пам’яті, що й&T
.