Option

Chúng ta đã thấy một số cách dùng Option<T>. Kiểu dữ liệu này hoặc lưu trữ một giá trị kiểu T hoặc không lưu trữ gì cả. Ví dụ, hàm String::find trả về một Option<usize>.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

This slide should take about 10 minutes.
  • Option được sử dụng rộng rãi ở nhiều nơi, không chỉ trong thư viện chuẩn.
  • unwrap sẽ trả về giá trị của Option hoặc panic. expect hoạt động tương tự nhưng có thể truyền thêm một thông báo lỗi.
    • Chương trình có thể panic khi gặp phải giá trị None, nhưng bạn không thể “vô tình” quên kiểm tra None.
    • Thông thường, ta có thể thoải mái sử dụng unwrap/expect khi thử nghiệm một ý tưởng mới, nhưng code production thường xử lý None một cách an toàn hơn.
  • Option<T> được tối ưu để chiếm bằng bộ nhớ như Ttrong đa số trường hợp.