如何通过FFI在C字符串(char*)和Rust String之间进行转换?
大家好!我正在用Rust编写一个小程序,通过FFI使用一个C库。我遇到了在C和Rust之间转换字符串的问题。
我有一个返回`char*`的C函数:
```c
// C code
char* get_greeting(void) {
return "Hello from C!";
}
```
另一个接受`const char*`的C函数:
```c
void print_message(const char* msg);
```
我尝试从Rust调用它们:
```rust
extern "C" {
fn get_greeting() -> *const c_char;
fn print_message(msg: *const c_char);
}
fn main() {
unsafe {
// 获取C字符串
let c_str = get_greeting();
// 如何将*const c_char转换为Rust String?
// 尝试将Rust字符串传递给C
let rust_string = String::from("Hello from Rust!");
// 如何将String转换为*const c_char?
print_message(???);
}
}
```
我知道C字符串是以null结尾的字节序列,而Ru