Учитывая std::path::Path
, какой самый прямой способ преобразовать это в std::os::raw::c_char
с нулевым завершением? (для перехода к C-функциям, которые идут по пути).
use std::ffi::CString;
use std::os::raw::c_char;
use std::os::raw::c_void;
extern "C" {
some_c_function(path: *const c_char);
}
fn example_c_wrapper(path: std::path::Path) {
let path_str_c = CString::new(path.as_os_str().to_str().unwrap()).unwrap();
some_c_function(path_str_c.as_ptr());
}
Есть ли способ избежать так много промежуточных шагов?
Path -> OsStr -> &str -> CString -> as_ptr()