use anchor_lang::prelude::*;
use num_derive::*;
use num_traits::*;
declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");
此处使用declare_id宏定义了Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS,这个ID对所有anchor工程都是一样的。让我们来看一下他的原型:
#[proc_macro]
pub fn declare_id(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
let id = parse_macro_input!(input as id::Id);
proc_macro::TokenStream::from(quote! {#id})
}
#[macro_export]
macro_rules! quote {
() => {
$crate::__private::TokenStream::new()
};
($($tt:tt)*) => {
{
let mut _s = $crate::__private::TokenStream::new();
$crate::quote_each_token!(_s $($tt)*);
_s
}};
}
上面这几个宏定义就是declare!所有关联调用的宏了,那什么是宏?
简单地说,Rust宏让你