#literals #string #create #macro

macro literal_cstr

A macro that makes it easier to create literal C strings

2 releases

Uses old Rust 2015

0.1.1 Oct 7, 2018
0.1.0 Aug 18, 2018

#145 in #literals

25 downloads per month

MIT/Apache

7KB

Literal C String

Build Status

A procedural macro for making literal C strings.

Problem

I was tired of typing the following:

let s = CString::new("Hello, world!").unwrap();

Ideally, I would be able to do something similar to the syntax of a byte string c"Hello, world!" but that requires a language change.

Solution

I decided to create a macro that is close enough.

let s = c!("Hello, world!");

Installation

Currently requires a nightly build of rust. Use rustc 1.31.0-nightly (4efdc04a5 2018-10-06) or newer.

[dependencies]
literal_cstr = "0.1"
#![feature(proc_macro_hygiene)]

extern crate literal_cstr;

use literal_cstr::c;

Procedural macros are stable, but #![feature(proc_macro_hygiene)] is required in order to use the macro with a literal string expression.

Usage

let s = c!("Hello, world!");

Check out /examples/show.rs for a full example.

Tests

$ cargo test

License

Licensed under either of

at your option.

Contribution

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

Dependencies

~2MB
~45K SLoC