Skip to content

Commit d81d0bf

Browse files
authored
Add from_slice helper (#23)
1 parent 7ad3c20 commit d81d0bf

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

sdk/pinocchio/src/instruction.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Instruction types.
22
3-
use core::marker::PhantomData;
3+
use core::{marker::PhantomData, mem::MaybeUninit};
44

55
use crate::{account_info::AccountInfo, pubkey::Pubkey};
66

@@ -211,3 +211,20 @@ impl<'a, 'b> From<&'b [Seed<'a>]> for Signer<'a, 'b> {
211211
}
212212
}
213213
}
214+
215+
impl<'a, 'b> Signer<'a, 'b> {
216+
pub fn from_slice<const SEEDS: usize>(seeds: &'b [&'a [u8]; SEEDS]) -> Self {
217+
const UNINIT: MaybeUninit<Seed> = core::mem::MaybeUninit::uninit();
218+
let mut signer_seeds = [UNINIT; SEEDS];
219+
220+
seeds.iter().enumerate().for_each(|(i, seed)| {
221+
signer_seeds[i].write(Seed::from(*seed));
222+
});
223+
224+
Self {
225+
seeds: signer_seeds.as_ptr() as *const Seed,
226+
len: SEEDS as u64,
227+
_seeds: PhantomData::<&'b [Seed<'a>]>,
228+
}
229+
}
230+
}

0 commit comments

Comments
 (0)