blob: db3bd18711050340e3c07bd83069a31c937c5e91 [file] [log] [blame]
David Tolnaye627fa82019-05-08 16:58:01 -07001use proc_macro2::TokenStream;
2use quote::quote;
3
4pub enum Operand {
5 Borrowed(TokenStream),
6 Owned(TokenStream),
7}
8
9pub use self::Operand::*;
10
11impl Operand {
12 pub fn tokens(&self) -> &TokenStream {
13 match self {
14 Borrowed(n) | Owned(n) => n,
15 }
16 }
17
18 pub fn ref_tokens(&self) -> TokenStream {
19 match self {
20 Borrowed(n) => n.clone(),
21 Owned(n) => quote!(&#n),
22 }
23 }
24
25 pub fn ref_mut_tokens(&self) -> TokenStream {
26 match self {
27 Borrowed(n) => n.clone(),
28 Owned(n) => quote!(&mut #n),
29 }
30 }
31
32 pub fn owned_tokens(&self) -> TokenStream {
33 match self {
34 Borrowed(n) => quote!(*#n),
35 Owned(n) => n.clone(),
36 }
37 }
38}