use std::ffi::CStr; use std::os::raw::c_char; use std::os::raw::c_int; #[no_mangle] // important : votre structure doit être conforme au C #[derive(Debug)] pub struct Bidule { pub i: c_int } #[no_mangle] pub extern fn afficher( s: *const c_char, b: *const Bidule ) -> i8 { unsafe { let b: &Bidule = match b.as_ref() { // je veux une référence non-mutable Some( b ) => b, None => return -1 }; match CStr::from_ptr(s).to_str() { Ok( texte ) => println!( "[{:?}] votre message : {:?}", b, texte ), Err( _ ) => return -1 } 0 } }