use super::error::DataTypeParseError;
use crate::internal::{enum_str::impl_enum_str, range::impl_numeric_range_type};
impl_enum_str!(
pub DataType, parse_error = DataTypeParseError,
values = [
(Audio, "AUDIO"),
(CDG, "CDG"),
(Mode1_2048, "MODE1/2048"),
(Mode1_2352, "MODE1/2352"),
(Mode2_2336, "MODE2/2336"),
(Mode2_2352, "MODE2/2352"),
#[allow(nonstandard_style)]
(CDI_2336, "CDI/2336"),
#[allow(nonstandard_style)]
(CDI_2352, "CDI/2352")
]
);
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct TrackNo(u8);
impl_numeric_range_type!(TrackNo, u8, max = 255, len = 3, display_leading_zeros = 2);
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
#[derive(Clone, Copy, Debug)]
pub struct Track {
pub no: TrackNo,
pub data_type: DataType,
}