Avatar ·

Comment convertir une chaîne C (char*) en Rust String et vice versa via FFI ?

Bonjour à tous ! J'écris un petit programme en Rust qui utilise une bibliothèque en C via FFI. Je suis confronté à un problème de conversion de chaînes entre C et Rust. J'ai une fonction C qui retourne `char*` : ```c // Code C char* get_greeting(void) { return "Hello from C!"; } ``` Et une autre fonction C qui prend `const char*` : ```c void print_message(const char* msg); ``` J'essaie de les appeler depuis Rust : ```rust extern "C" { fn get_greeting() -> *const c_char; fn print_message(msg: *const c_char); } fn main() { unsafe { // On obtient une chaîne C let c_str = get_greeting(); // Comment convertir *const c_char en Rust String ? // On essaie de passer une chaîne Rust à C let rust_string = String::from("Hello from Rust!"); // Comment convertir String en *const c_char ? print_message(???); } } ``` Je comprends que les chaînes C sont des séquences d'octets terminées par un nul, et que Ru