use std::num::NonZeroU64;
pub use cruiser_derive::AccountList;
use crate::compressed_numbers::CompressedNumber;
pub trait AccountList {
type DiscriminantCompressed: CompressedNumber<Num = NonZeroU64>;
}
pub unsafe trait AccountListItem<T>: Sized + AccountList {
#[must_use]
fn discriminant() -> NonZeroU64;
#[inline]
#[must_use]
fn compressed_discriminant() -> Self::DiscriminantCompressed {
Self::DiscriminantCompressed::from_number(Self::discriminant())
}
#[must_use]
fn from_account(account: T) -> Self;
fn into_account(self) -> Result<T, Self>;
}