use crate::{error::RiffResult, RiffError};
use std::convert::{TryFrom, TryInto};
#[derive(Debug, Clone)]
pub struct FourCC {
data: [u8; 4],
}
impl FourCC {
pub fn new(data: &[u8]) -> RiffResult<FourCC> {
let data = data.try_into()?;
Ok(FourCC { data })
}
pub fn as_bytes(&self) -> &[u8; 4] {
&self.data
}
pub fn into_bytes(self) -> [u8; 4] {
self.data
}
}
impl TryFrom<&[u8]> for FourCC {
type Error = RiffError;
fn try_from(value: &[u8]) -> Result<Self, Self::Error> {
Ok(FourCC {
data: value.try_into()?,
})
}
}
impl TryFrom<&str> for FourCC {
type Error = RiffError;
fn try_from(value: &str) -> Result<Self, Self::Error> {
value.as_bytes().try_into()
}
}