pub enum PrintfFormatStringFragment {
String(String),
Expr {
arg: Arg,
format_trait: Ident,
},
}
Expand description
A fragment of a printf format string.
Printf format strings are built of multiple fragments. These fragments can
be either a string (PrintfFormatStringFragment::String
) or an expression
that evaluates to a const &str
(PrintfFormatStringFragment::Expr
).
These fragments can then be used to create a single const &str
for use by
code generation.
§Example
use pw_bytes::concat_static_strs;
use pw_format::macros::{PrintfFormatStringFragment, Result};
use quote::quote;
fn handle_fragments(format_string_fragments: &[PrintfFormatStringFragment]) -> Result<()> {
let format_string_pieces: Vec<_> = format_string_fragments
.iter()
.map(|fragment| fragment.as_token_stream("__pw_log_backend_crate"))
.collect::<Result<Vec<_>>>()?;
quote! {
let format_string = concat_static_strs!("prefix: ", #(#format_string_pieces),*, "\n");
};
Ok(())
}
Variants§
String(String)
A fragment that is a string.
Expr
An expressions that can be converted to a const &str
.
Implementations§
Source§impl PrintfFormatStringFragment
impl PrintfFormatStringFragment
Sourcepub fn as_token_stream(
&self,
printf_formatter_trait_location: &str,
) -> Result<TokenStream>
pub fn as_token_stream( &self, printf_formatter_trait_location: &str, ) -> Result<TokenStream>
Returns a proc_macro2::TokenStream
representing this fragment.
Auto Trait Implementations§
impl Freeze for PrintfFormatStringFragment
impl RefUnwindSafe for PrintfFormatStringFragment
impl !Send for PrintfFormatStringFragment
impl !Sync for PrintfFormatStringFragment
impl Unpin for PrintfFormatStringFragment
impl UnwindSafe for PrintfFormatStringFragment
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more