我希望一个Rust库可以向C公开一个const char *
类型的静态字符串,以便与现有接口(具体来说是librsync)兼容。也就是说,C头文件包含以下内容:
extern char const *my_string;
在C语言中,该库只需
char const *my_string = "hi";
在Rust中,我尝试了类似以下的代码:
pub static my_string: *const libc::c_char = unsafe { "hi\0" as *const libc::c_char };
但是这个抱怨。
error: casting `&'static str` as `*const i8` is invalid
看起来我不能使用CString
等,因为它们不是编译时常量表达式。