Lines
68.75 %
Functions
50 %
use std::{fmt::Display, str::FromStr};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Audio {
pub sample_rate: u64,
pub bits: u8,
pub channels: u8,
}
impl FromStr for Audio {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
let mut parts = s.split(':');
let sample_rate = parts.next().ok_or(())?.parse().map_err(|_| ())?;
let bits = u8::from_str_radix(parts.next().ok_or(())?, 16).map_err(|_| ())? + 1;
let channels = parts.next().ok_or(())?.parse().map_err(|_| ())?;
Ok(Self {
sample_rate,
bits,
channels,
})
impl Display for Audio {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}:{:X}:{}",
self.sample_rate,
self.bits - 1,
self.channels
)