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