web3-macros 0.0.4

A utility crate for web3 name service operations, forked from bonfida/utils
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use quote::quote;
use web3_domain_name_service::utils::HASH_PREFIX;

use proc_macro2::{Span, TokenStream};
use solana_program::hash::hashv;
use syn::{LitByte, LitStr};

pub fn process(item: TokenStream) -> TokenStream {
    let str: LitStr = syn::parse(item.into()).unwrap();
    let key = str.value();
    let hashed_array = hashv(&[format!("{}\x01{}", HASH_PREFIX, key).as_bytes()]).to_bytes();
    let hashed_bytes = hashed_array
        .iter()
        .map(|b| LitByte::new(*b, Span::call_site()));
    quote!(
        [#(#hashed_bytes),*]
    )
}