1use {
2 crate::{Context, HandlerContext},
3 core::mem::MaybeUninit,
4};
5
6pub struct Array<T, const N: usize>(pub [T; N]);
17
18impl<'a, 'b, 'c, T, const N: usize> HandlerContext<'a, 'b, 'c> for Array<T, N>
19where
20 T: HandlerContext<'a, 'b, 'c> + Context,
21{
22 #[inline(always)]
23 fn from_entrypoint(
24 program_id: &'a pinocchio::pubkey::Pubkey,
25 accounts: &mut &'b [pinocchio::account_info::AccountInfo],
26 instruction_data: &mut &'c [u8],
27 ) -> Result<Self, typhoon_errors::Error> {
28 let mut result = [const { MaybeUninit::uninit() }; N];
29
30 for r in result.iter_mut() {
31 r.write(T::from_entrypoint(program_id, accounts, instruction_data)?);
32 }
33
34 let array = unsafe { result.map(|item| item.assume_init()) };
36 Ok(Array(array))
37 }
38}