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
Fields
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 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