dlp_api/state/utils/
discriminator.rs1use 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}