pub trait SampleParser { fn parse(data: &[u8]) -> T; } pub struct Signed16PCM; impl SampleParser for Signed16PCM { fn parse(chunk: &[u8]) -> f64 { (chunk[0] as i16 | (chunk[1] as i16) << 8) as f64 } }