Avatar ·

Wie man einen C-String (char*) in einen Rust-String und zurück über FFI konvertiert?

Hallo zusammen! Ich schreibe ein kleines Programm in Rust, das eine C-Bibliothek über FFI verwendet. Ich bin auf ein Problem bei der Konvertierung von Strings zwischen C und Rust gestoßen. Ich habe eine C-Funktion, die `char*` zurückgibt: ```c // C code char* get_greeting(void) { return "Hello from C!"; } ``` Und eine andere C-Funktion, die `const char*` akzeptiert: ```c void print_message(const char* msg); ``` Ich versuche, sie aus Rust aufzurufen: ```rust extern "C" { fn get_greeting() -> *const c_char; fn print_message(msg: *const c_char); } fn main() { unsafe { // C-String empfangen let c_str = get_greeting(); // Wie konvertiert man *const c_char in Rust String? // Versuchen, einen Rust-String an C zu übergeben let rust_string = String::from("Hello from Rust!"); // Wie konvertiert man String in *const c_char? print_message(???); } } ``` Ich verstehe, dass C-Strings null-terminierte Byte-Sequenzen sind, während Ru