// liaison vers le nom de la cdylib (hors extension et préfixe) #[link(name="doubler")] // indication que la fonction n'est pas au sein du code Rust du projet extern { // définition de la signature : passage par valeur fn doubler(x: u32) -> u32; // ici, passage par "référence" fn tripler(x: *mut u32); } fn main() { let mut i: u32 = 1; // bloc "unsafe" car le code ne provient pas de Rust (cf. notions d'emprunt et de possession) unsafe { println!("{:?} x 3 = ?", i ); tripler( &mut i ); println!("{} x 2 = {}", i, doubler( i ) ); } }