blob: 90570a040b683f21951f5dff5a2bd900f6653b9f [file] [log] [blame]
David Tolnay64023912018-08-31 09:51:12 -07001use proc_macro2::TokenStream;
2use quote::ToTokens;
3
4pub struct TokensOrDefault<'a, T: 'a>(pub &'a Option<T>);
5
6impl<'a, T> ToTokens for TokensOrDefault<'a, T>
7where
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}