David Tolnay | 6402391 | 2018-08-31 09:51:12 -0700 | [diff] [blame] | 1 | use proc_macro2::TokenStream; |
2 | use quote::ToTokens; | ||||
3 | |||||
4 | pub struct TokensOrDefault<'a, T: 'a>(pub &'a Option<T>); | ||||
5 | |||||
6 | impl<'a, T> ToTokens for TokensOrDefault<'a, T> | ||||
7 | where | ||||
8 | T: ToTokens + Default, | ||||
9 | { | ||||
10 | fn to_tokens(&self, tokens: &mut TokenStream) { | ||||
11 | match *self.0 { | ||||
12 | Some(ref t) => t.to_tokens(tokens), | ||||
13 | None => T::default().to_tokens(tokens), | ||||
14 | } | ||||
15 | } | ||||
16 | } |