Skip to main content

dlp_api/state/utils/
discriminator.rs

1use num_enum::{IntoPrimitive, TryFromPrimitive};
2
3#[repr(u8)]
4#[derive(
5    Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive,
6)]
7pub enum AccountDiscriminator {
8    DelegationRecord = 100,
9    DelegationMetadata = 102,
10    CommitRecord = 101,
11    ProgramConfig = 103,
12}
13
14impl AccountDiscriminator {
15    pub const SPACE: usize = 8;
16
17    pub const fn to_bytes(&self) -> [u8; Self::SPACE] {
18        let num = (*self) as u64;
19        num.to_le_bytes()
20    }
21}
22
23pub trait AccountWithDiscriminator {
24    fn discriminator() -> AccountDiscriminator;
25}