Avatar ·

Quelle est l'importance des frais généraux de Option<T> en Rust par rapport aux pointeurs nuls ?

Bonjour à tous ! Je viens de commencer à apprendre Rust, après être passé du C++. Là-bas, j'avais l'habitude d'utiliser nullptr ou NULL pour indiquer l'absence de valeur. En Rust, on utilise plutôt Option, et une question me taraude : est-ce que cela coûte cher ? En C++, un pointeur nul est simplement 0, sans aucun coût supplémentaire. Par exemple, j'ai une structure comme celle-ci : ```rust struct Node { value: i32, left: Option>, right: Option>, } ``` Si je fais `left: None`, Rust doit stocker quelque part un drapeau qui indique que c'est None. Cela signifie que chaque Option prend plus de mémoire qu'un pointeur brut ? Ou le compilateur optimise-t-il cela ? J'ai essayé de vérifier la taille : ```rust use std::mem::size_of; fn main() { println!("{}", size_of::>>()); // 8 ? println!("{}", size_of::>()); // 8 ? } ``` Sur un système 64 bits, les deux ont affiché 8 octets. Mais comment est-ce possible ? Si Option est une enum, elle doit stocker un discriminant (me