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