Option

Ми вже бачили деяке використання Option<T>. Це зберігає або значення типу T, або нічого. Наприклад, String::find повертає Option<usize>.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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.