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
No answers yet.
Connectez-vous pour laisser une réponse