Skip to main content

flash_lso/types/
amf_version.rs

1use core::fmt;
2
3/// The version of AMF being used
4#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
5#[derive(Eq, PartialEq, Debug, Copy, Clone)]
6#[repr(u8)]
7pub enum AMFVersion {
8    /// AMF0
9    AMF0 = 0,
10
11    #[cfg(feature = "amf3")]
12    /// AMF3
13    AMF3 = 3,
14}
15
16impl TryFrom<u8> for AMFVersion {
17    type Error = ();
18
19    fn try_from(value: u8) -> Result<Self, Self::Error> {
20        match value {
21            0 => Ok(Self::AMF0),
22            #[cfg(feature = "amf3")]
23            3 => Ok(Self::AMF3),
24            _ => Err(()),
25        }
26    }
27}
28
29impl fmt::Display for AMFVersion {
30    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
31        match self {
32            AMFVersion::AMF0 => f.write_str("AMF0"),
33            #[cfg(feature = "amf3")]
34            AMFVersion::AMF3 => f.write_str("AMF3"),
35        }
36    }
37}