Tour de Rust Table des matières

Code intelligents mais dangereux

Les pointeurs intelligents ont tendance à utiliser assez souvent du code dangereux (en anglais unsafe). Comme mentionné précédemment, ce sont des outils courants pour interagir au plus bas niveau de la mémoire.

Qu'est-ce qu'un code dangereux? Un code dangereux se comporte exactement comme un code normal à l'exception que le compilateur Rust ne garantie pas la validité du programme.

La première cause d'un code dangereux est lorsqu'on essaye de déréférencer un pointeur brut. Cela signifie prendre un pointeur brut correspondant à une adresse mémoire, déclarer "une structure de données existe ici!" et transformer les octets de cet emplacement mémoire dans une représentation de données que l'on pourra utiliser (par exemple *const u8 en u8). Puisque Rust ne garantie pas la signification des octets (il ne garde pas de traces), il place le déréférencement dans un bloc unsafe {...}.