[][src]Crate zombiezen_const_cstr

Create static C-compatible strings from Rust string literals.

Example

use zombiezen_const_cstr::{const_cstr, ConstCStr};

use std::os::raw::c_char;
use std::ffi::CStr;

/// Declare a constant:
const HELLO_CSTR: ConstCStr = const_cstr!("Hello, world!");

// Imagine this is an `extern "C"` function linked from some other lib.
unsafe fn print_c_string(cstr: *const c_char) {
    println!("{}", CStr::from_ptr(cstr).to_str().unwrap());
}

fn main() {
    let goodnight_cstr = const_cstr!("Goodnight, sun!");

    unsafe {
        print_c_string(HELLO_CSTR.as_ptr());
        print_c_string(goodnight_cstr.as_ptr());
    }
}

Prints:

Hello, world!
Goodnight, sun!

Macros

const_cstr

Create a C-compatible constant string by appending a NUL byte to the passed string.

Structs

ConstCStr

A reference to a C-compatible string constant.