spl_transfer_hook_example/
state.rs

1//! State helpers for working with the example program
2
3use {
4    solana_program::program_error::ProgramError,
5    spl_tlv_account_resolution::{account::ExtraAccountMeta, state::ExtraAccountMetaList},
6    spl_transfer_hook_interface::instruction::ExecuteInstruction,
7};
8
9/// Generate example data to be used directly in an account for testing
10pub fn example_data(account_metas: &[ExtraAccountMeta]) -> Result<Vec<u8>, ProgramError> {
11    let account_size = ExtraAccountMetaList::size_of(account_metas.len())?;
12    let mut data = vec![0; account_size];
13    ExtraAccountMetaList::init::<ExecuteInstruction>(&mut data, account_metas)?;
14    Ok(data)
15}