1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use std::ffi::{CString, CStr};
use std::os::raw::{c_char};

pub type JsString = *mut c_char;

pub fn js_string_output<T: Into<Vec<u8>>>(t: T) -> JsString {
    let c_string = CString::new(t).unwrap();
    c_string.into_raw()
}

pub fn js_string_input(ptr: JsString) -> String {
    let s: String;

    unsafe {
        let cstr = CStr::from_ptr(ptr);
        let tmp: &str = cstr.to_str().unwrap();
        s = tmp.to_owned();
    };

    s
}