|
@@ -21,12 +21,9 @@ pub fn event(
|
|
|
let event_name = &event_strct.ident;
|
|
|
|
|
|
let discriminator: proc_macro2::TokenStream = {
|
|
|
- let discriminator_preimage = format!("event:{event_name}");
|
|
|
- let mut discriminator = [0u8; 8];
|
|
|
- discriminator.copy_from_slice(
|
|
|
- &anchor_syn::hash::hash(discriminator_preimage.as_bytes()).to_bytes()[..8],
|
|
|
- );
|
|
|
- format!("{discriminator:?}").parse().unwrap()
|
|
|
+ let discriminator_preimage = format!("event:{event_name}").into_bytes();
|
|
|
+ let discriminator = anchor_syn::hash::hash(&discriminator_preimage);
|
|
|
+ format!("{:?}", &discriminator.0[..8]).parse().unwrap()
|
|
|
};
|
|
|
|
|
|
let ret = quote! {
|
|
@@ -35,9 +32,10 @@ pub fn event(
|
|
|
|
|
|
impl anchor_lang::Event for #event_name {
|
|
|
fn data(&self) -> Vec<u8> {
|
|
|
- let mut d = #discriminator.to_vec();
|
|
|
- d.append(&mut self.try_to_vec().unwrap());
|
|
|
- d
|
|
|
+ let mut data = Vec::with_capacity(256);
|
|
|
+ data.extend_from_slice(&#discriminator);
|
|
|
+ self.serialize(&mut data).unwrap();
|
|
|
+ data
|
|
|
}
|
|
|
}
|
|
|
|