Skip to main content

typhoon_utility/bytes/
mod.rs

1mod writer;
2
3pub use writer::*;
4use {
5    core::mem::MaybeUninit,
6    pinocchio::{cpi::Seed, instruction::InstructionAccount, AccountView},
7};
8
9pub const UNINIT_BYTE: MaybeUninit<u8> = MaybeUninit::<u8>::uninit();
10pub const UNINIT_SEED: MaybeUninit<Seed> = MaybeUninit::<Seed>::uninit();
11pub const UNINIT_INS_ACC: MaybeUninit<InstructionAccount> =
12    MaybeUninit::<InstructionAccount>::uninit();
13pub const UNINIT_ACC_VIEW: MaybeUninit<&AccountView> = MaybeUninit::<&AccountView>::uninit();
14
15#[inline(always)]
16pub fn write_bytes(destination: &mut [MaybeUninit<u8>], source: &[u8]) {
17    let len = destination.len().min(source.len());
18    unsafe {
19        core::ptr::copy_nonoverlapping(source.as_ptr(), destination.as_mut_ptr() as *mut u8, len);
20    }
21}