У меня std::ffi::OsString
в Windows, но мне нужно передать std::ffi::CString
в функцию FFI.Есть ли способ преобразовать OsString
в CString
?
. Я знаю, что в Windows OsString
поддерживается буфером в кодировке WTF-8.По сути, все, что должно произойти, - это добавить символ ASCII nul
и создать из него строку CString.Есть ли хороший способ сделать это?Если нет, возможно ли получить прямой доступ к этому буферу?
Вот пример кода:
extern "system" fn some_ffi(s: *mut c_char);
fn my_func(os_string: &OsString) {
let c_string: CString = // ???
some_ffi(c_string.as_raw())
}