//! 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()); //! ```
// While this isn't necessary when using Cargo >= 1.42, omitting it actually requires path-less // `--extern proc_macro` to be passed to `rustc` when building this crate. Some tools may not do // this correctly. So it's added as a precaution. externcrate proc_macro;
usecrate::parse::parse_input; use proc_macro::TokenStream as RawTokenStream; use proc_macro2::{Literal, Span, TokenStream}; use quote::{quote, quote_spanned}; use std::ffi::CString;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.