use proc_macro2; use quote::quote; use syn; pub fn lit_to_string(lit: &syn::Lit) -> Option { match *lit { syn::Lit::Str(ref s) => Some(s.value()), _ => None, } } pub fn lit_to_int(lit: &syn::Lit) -> Option { match *lit { syn::Lit::Int(ref s) => Some(s.base10_parse().unwrap()), _ => None, } } pub fn lit_to_float(lit: &syn::Lit) -> Option { match *lit { syn::Lit::Float(ref s) => Some(s.base10_parse::().unwrap()), syn::Lit::Int(ref s) => Some(s.base10_parse::().unwrap()), _ => None, } } pub fn lit_to_bool(lit: &syn::Lit) -> Option { match *lit { syn::Lit::Bool(ref s) => Some(s.value), _ => None, } } pub fn option_u64_to_tokens(opt: Option) -> proc_macro2::TokenStream { match opt { Some(ref t) => quote!(::std::option::Option::Some(#t)), None => quote!(::std::option::Option::None), } } pub fn option_f64_to_tokens(opt: Option) -> proc_macro2::TokenStream { match opt { Some(ref t) => quote!(::std::option::Option::Some(#t)), None => quote!(::std::option::Option::None), } }