1 use proc_macro2::TokenStream; 2 use quote::quote; 3 4 pub enum Operand { 5 Borrowed(TokenStream), 6 Owned(TokenStream), 7 } 8 9 pub use self::Operand::*; 10 11 impl Operand { tokens(&self) -> &TokenStream12 pub fn tokens(&self) -> &TokenStream { 13 match self { 14 Borrowed(n) | Owned(n) => n, 15 } 16 } 17 ref_tokens(&self) -> TokenStream18 pub fn ref_tokens(&self) -> TokenStream { 19 match self { 20 Borrowed(n) => n.clone(), 21 Owned(n) => quote!(&#n), 22 } 23 } 24 ref_mut_tokens(&self) -> TokenStream25 pub fn ref_mut_tokens(&self) -> TokenStream { 26 match self { 27 Borrowed(n) => n.clone(), 28 Owned(n) => quote!(&mut #n), 29 } 30 } 31 owned_tokens(&self) -> TokenStream32 pub fn owned_tokens(&self) -> TokenStream { 33 match self { 34 Borrowed(n) => quote!(*#n), 35 Owned(n) => n.clone(), 36 } 37 } 38 } 39