#macro #cstr

macro cstr

Macro for building static CStr reference

20 releases

0.2.11 Sep 24, 2022
0.2.10 Feb 25, 2022
0.2.9 Sep 24, 2021
0.2.8 Dec 6, 2020
0.1.3 Feb 14, 2018

#90 in Procedural macros

Download history 8829/week @ 2022-11-26 10513/week @ 2022-12-03 9685/week @ 2022-12-10 9142/week @ 2022-12-17 7858/week @ 2022-12-24 8850/week @ 2022-12-31 10675/week @ 2023-01-07 10195/week @ 2023-01-14 10533/week @ 2023-01-21 11073/week @ 2023-01-28 10335/week @ 2023-02-04 12046/week @ 2023-02-11 12485/week @ 2023-02-18 15656/week @ 2023-02-25 15649/week @ 2023-03-04 12330/week @ 2023-03-11

58,045 downloads per month
Used in 32 crates (26 directly)

MIT license

12KB
230 lines

cstr

CI Crates.io Docs

A macro for getting &'static CStr from literal or identifier.

This macro checks whether the given literal is valid for CStr at compile time, and returns a static reference of CStr.

This macro can be used to to initialize constants on Rust 1.64 and above.

Example

use cstr::cstr;
use std::ffi::CStr;

let test = cstr!(b"hello\xff");
assert_eq!(test, CStr::from_bytes_with_nul(b"hello\xff\0").unwrap());
let test = cstr!("hello");
assert_eq!(test, CStr::from_bytes_with_nul(b"hello\0").unwrap());
let test = cstr!(hello);
assert_eq!(test, CStr::from_bytes_with_nul(b"hello\0").unwrap());

lib.rs:

A macro for getting &'static CStr from literal or identifier.

This macro checks whether the given literal is valid for CStr at compile time, and returns a static reference of CStr.

This macro can be used to to initialize constants on Rust 1.64 and above.

Example

use cstr::cstr;
use std::ffi::CStr;

let test = cstr!(b"hello\xff");
assert_eq!(test, CStr::from_bytes_with_nul(b"hello\xff\0").unwrap());
let test = cstr!("hello");
assert_eq!(test, CStr::from_bytes_with_nul(b"hello\0").unwrap());
let test = cstr!(hello);
assert_eq!(test, CStr::from_bytes_with_nul(b"hello\0").unwrap());

Dependencies

~99KB