Avatar ·

ما هي تكلفة `Option<T>` في Rust مقارنة بالمؤشرات الفارغة؟

```html Всем привет! Я только начал изучать Rust, перешёл с C++. Там я привык использовать nullptr или NULL для обозначения отсутствия значения. В Rust вместо этого используют Option, и меня мучает вопрос: насколько это дорого? Ведь в C++ нулевой указатель — это просто 0, и никаких дополнительных затрат нет. Например, у меня есть такая структура: ```rust struct Node { value: i32, left: Option>, right: Option>, } ``` Если я сделаю `left: None`, то Rust должен хранить где-то флаг, который говорит, что это None. Получается, каждый Option занимает больше памяти, чем просто сырой указатель? Или компилятор как-то оптимизирует это? Я попробовал проверить размер: ```rust use std::mem::size_of; fn main() { println!("{}", size_of::>>()); // 8? println!("{}", size_of::>()); // 8? } ``` На 64-битной системе оба показали 8 байт. Но как так? Если Option — это enum, он должен хранить дискриминант (ме ```