我想让Rust库const char *向C 公开一个静态字符串,以便与现有接口(特别是librsync)兼容.也就是说,C头文件有
extern char const *my_string;
Run Code Online (Sandbox Code Playgroud)
在C中,图书馆就是这样
char const *my_string = "hi";
Run Code Online (Sandbox Code Playgroud)
在Rust我尝过类似的东西
pub static my_string: *const libc::c_char = unsafe { "hi\0" as *const libc::c_char };
Run Code Online (Sandbox Code Playgroud)
但这抱怨
error: casting `&'static str` as `*const i8` is invalid
Run Code Online (Sandbox Code Playgroud)
似乎我不能使用CString等因为它们不是编译时常量表达式.