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
use std::ffi::CString;

pub trait ToCString {
    /// As a string pointer in C, for libc FFI.
    ///
    /// # Examples
    /// ```
    /// use bczhc_lib::libc::ToCString;
    /// let heap_str = String::from("abc");
    /// let stack_str = "cba";
    ///
    /// heap_str.to_c_string().as_ptr();
    /// stack_str.to_c_string().as_ptr();
    /// ```
    fn to_c_string(&self) -> CString;
}

impl ToCString for String {
    fn to_c_string(&self) -> CString {
        CString::new(self.as_str()).unwrap()
    }
}

impl ToCString for str {
    fn to_c_string(&self) -> CString {
        CString::new(self).unwrap()
    }
}