Cómo convertir una cadena C (char*) a Rust String y viceversa a través de FFI
¡Hola a todos! Estoy escribiendo un pequeño programa en Rust que usa una biblioteca en C a través de FFI. Me encontré con el problema de convertir cadenas entre C y Rust.
Tengo una función en C que devuelve `char*`:
```c
// C code
char* get_greeting(void) {
return "Hello from C!";
}
```
Y otra función en C que toma `const char*`:
```c
void print_message(const char* msg);
```
Estoy intentando llamarlas desde Rust:
```rust
extern "C" {
fn get_greeting() -> *const c_char;
fn print_message(msg: *const c_char);
}
fn main() {
unsafe {
// Obtenemos la cadena C
let c_str = get_greeting();
// ¿Cómo convertir *const c_char a Rust String?
// Intentamos pasar una cadena Rust a C
let rust_string = String::from("Hello from Rust!");
// ¿Cómo convertir String a *const c_char?
print_message(???);
}
}
```
Entiendo que las cadenas C son secuencias de bytes terminadas en nulo, mientras que Ru