1 2 3 4 5 6 7 8 9 10 11 12 13 14
use proc_macro2::{Literal, TokenStream}; use quote::{quote, ToTokens, TokenStreamExt}; /// A compile-time C string. pub struct CString(pub String); impl ToTokens for CString { fn to_tokens(&self, tokens: &mut TokenStream) { let byte_string = Literal::byte_string(format!("{}\0", self.0).as_bytes()); tokens.append_all(quote! { (#byte_string as *const u8) }); } }