при латинских буквах. А при русских вылетает. В чем проблема ?
#[no_mangle]
pub extern "C" fn string_from_rust(s: *const c_char) -> *const c_char {
let c_str: &CStr = unsafe { CStr::from_ptr(s) };
let str_slice: &str = c_str.to_str().unwrap();
let str_buf: String = str_slice.to_owned();
let s2 = CString::new(str_buf).unwrap();
let p = s2.as_ptr();
std::mem::forget(&s2);
p
}
Скорее всего в том, что строка извне - не ASCII.
Обсуждают сегодня