1
2
3
4
5
6
7
8
9
use anchor_lang::{error::ErrorCode, Owner, Result, ZeroCopy};

pub fn check_discriminator<T: ZeroCopy + Owner + std::fmt::Debug>(data: &[u8]) -> Result<()> {
    let disc_bytes: [u8; 8] = data[0..8].try_into().unwrap();
    if disc_bytes != T::discriminator() {
        return Err(ErrorCode::AccountDiscriminatorMismatch.into());
    }
    Ok(())
}