zombiezen-const-cstr 1.0.0

Create static C-compatible strings from Rust string literals.
Documentation
# `const-cstr` [![]https://img.shields.io/crates/v/zombiezen-const-cstr.svg]https://crates.io/crates/zombiezen-const-cstr

Create static C-compatible strings from Rust string literals.

This is forked from [abonander/const-cstr][] to implement an API that conforms
to the [Rust API Guidelines][] and takes advantage of [`const` functions][] to
hide more implementation details.

[abonander/const-cstr]: https://github.com/abonander/const-cstr
[`const` functions]: https://doc.rust-lang.org/reference/items/functions.html#const-functions
[Rust API Guidelines]: https://rust-lang.github.io/api-guidelines/

## Usage

Cargo.toml:

```toml
[dependencies]
zombiezen-const-cstr = "1.0"
```

## Example

```rust
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:

 ```notest
 Hello, world!
 Goodnight, sun!
 ```

## License

Licensed under either of
 * Apache License, Version 2.0 ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you shall be dual licensed as above, without any
additional terms or conditions.