1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use eosio_numstr::name_from_bytes; use proc_macro2::{Literal, TokenStream}; use quote::{ToTokens, TokenStreamExt}; use syn::{ parse::{Parse, ParseStream, Result as ParseResult}, LitStr, }; pub struct EosioName(u64); impl Parse for EosioName { fn parse(input: ParseStream) -> ParseResult<Self> { let name = input.parse::<LitStr>()?.value(); name_from_bytes(name.bytes()) .map(Self) .map_err(|e| input.error(e)) } } impl ToTokens for EosioName { fn to_tokens(&self, tokens: &mut TokenStream) { tokens.append(Literal::u64_suffixed(self.0)) } }