[][src]Crate c_macros

This library provide a bunch of macros useful for interacting with C code.

Why c_macros?

  1. All alternatives are performant as possible,in particular to_raw_c_string("Hello world!") does not convert a vector into a boxed slice as CString::from_vec_unchecked(String::from("Hello world!").into_bytes()).into_raw() does.

  2. As such,because they use byte literal syntax at the expansion,all are safe abstractions and does not need an unsafe block neither trigger warnings if are inside of one.

Versions

This library require a nightly compiler with the following features enabled: proc_macro_hygiene because the macros are only useful expanded as expressions,new_uninit and type_ascription for to_raw_c_string.

Macros

to_c_str

Convert an encoded string to a CStr.

to_c_string

Convert an encoded string to a CString.

to_raw_c_str

Convert an encoded string to a stack-allocated *const c_char.

to_raw_c_string

Convert an encoded string to a *mut c_char allocated in the system heap.