Quão grandes são as sobrecargas de Option<T> em Rust comparadas a ponteiros nulos?
Olá a todos! Acabei de começar a aprender Rust, vindo de C++. Lá, eu costumava usar nullptr ou NULL para indicar ausência de valor. Em Rust, em vez disso, usa-se Option, e fico me perguntando: quão caro isso é? Afinal, em C++, um ponteiro nulo é apenas 0, e não há custos adicionais.
Por exemplo, tenho uma struct assim:
```rust
struct Node {
value: i32,
left: Option>,
right: Option>,
}
```
Se eu fizer `left: None`, o Rust precisa armazenar em algum lugar uma flag que indica que é None. Então, cada Option ocupa mais memória do que um ponteiro bruto? Ou o compilador otimiza isso de alguma forma?
Tentei verificar o tamanho:
```rust
use std::mem::size_of;
fn main() {
println!("{}", size_of::