| use proc_macro2::TokenStream; |
| use quote::quote; |
| |
| pub enum Operand { |
| Borrowed(TokenStream), |
| Owned(TokenStream), |
| } |
| |
| pub use self::Operand::*; |
| |
| impl Operand { |
| pub fn tokens(&self) -> &TokenStream { |
| match self { |
| Borrowed(n) | Owned(n) => n, |
| } |
| } |
| |
| pub fn ref_tokens(&self) -> TokenStream { |
| match self { |
| Borrowed(n) => n.clone(), |
| Owned(n) => quote!(&#n), |
| } |
| } |
| |
| pub fn ref_mut_tokens(&self) -> TokenStream { |
| match self { |
| Borrowed(n) => n.clone(), |
| Owned(n) => quote!(&mut #n), |
| } |
| } |
| |
| pub fn owned_tokens(&self) -> TokenStream { |
| match self { |
| Borrowed(n) => quote!(*#n), |
| Owned(n) => n.clone(), |
| } |
| } |
| } |