1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use std::ffi::{CStr, CString};
use std::os::raw::c_char;
pub unsafe fn c_char_to_string(cchar: *const c_char) -> String {
let c_str = CStr::from_ptr(cchar);
let r_str = match c_str.to_str() {
Err(_) => "",
Ok(string) => string,
};
r_str.to_string()
}
pub fn string_to_c_char(r_string: String) -> *mut c_char {
CString::new(r_string).unwrap().into_raw()
}
#[no_mangle]
#[cfg(target_os = "ios")]
pub unsafe extern "C" fn c_strings_destroy_c_char(cchar: *mut *mut c_char) {
CString::from_raw(*cchar);
}