vrust 0.0.1

VRust game engine
use std::ffi::CString;
use std::os::raw::c_char;
use std::iter::once;

pub fn slice_to_string(s: &[u8]) -> String {
    let mut r = String::new();
    for c in s {
        if *c == 0 {
            break;
        }
        r.push(*c as char);
    }
    r
}

pub fn strings_to_cstrings(ss: Vec<String>) -> Vec<CString> {
    let mut r = Vec::new();
    for s in ss {
        r.push(CString::new(s.into_bytes()).unwrap());
    }
    r
}

pub fn cstrings_to_ptrs(cs: &Vec<CString>) -> Vec<*const c_char> {
    let mut r = Vec::new();
    for c in cs {
        r.push(c.as_ptr());
    }
    r
}

pub fn string_to_cwstring(s: &str) -> Vec<u16> {
    s.encode_utf16().chain(once(0)).collect()
}