unsafe
Avancéunsafe ne désactive pas le borrow checker : il débloque cinq « super-pouvoirs » dont vous garantissez la sûreté.
// 1. Déréférencer un pointeur brut
let x = 5;
let p = &x as *const i32;
unsafe { println!("{}", *p); }
// 2. Appeler une fonction unsafe / extern (FFI)
unsafe extern "C" {
fn abs(input: i32) -> i32;
}
let v = unsafe { abs(-3) };
// 3. Accéder à une variable statique mutable
// 4. Implémenter un trait unsafe (Send, Sync)
// 5. Accéder aux champs d'une union
Bonne pratique : encapsulez chaque bloc
unsafedans une API sûre, minimale, et documentez l'invariant avec un commentaire// SAFETY: ....cargo miri testdétecte de nombreux comportements indéfinis.