1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use proc_macro2::TokenStream; use quote::ToTokens; pub struct TokensOrDefault<'a, T: 'a>(pub &'a Option<T>); impl<'a, T> ToTokens for TokensOrDefault<'a, T> where T: ToTokens + Default, { fn to_tokens(&self, tokens: &mut TokenStream) { match self.0 { Some(t) => t.to_tokens(tokens), None => T::default().to_tokens(tokens), } } }