diff --git a/src/chunk.rs b/src/chunk.rs index 181bcb2..c68fd22 100644 --- a/src/chunk.rs +++ b/src/chunk.rs @@ -1,8 +1,9 @@ use std::rc::Rc; -pub enum Chunk { +#[derive(Clone)] +pub enum Chunk = Vec> { Headers { - bytes: Rc> + bytes: Rc }, ClusterHead { keyframe: bool, @@ -12,16 +13,16 @@ pub enum Chunk { bytes: [u8;16] }, ClusterBody { - bytes: Rc> + bytes: Rc } } -impl AsRef<[u8]> for Chunk { +impl> AsRef<[u8]> for Chunk { fn as_ref(&self) -> &[u8] { match self { - &Chunk::Headers {ref bytes, ..} => &bytes, + &Chunk::Headers {ref bytes, ..} => bytes.as_ref().as_ref(), &Chunk::ClusterHead {ref bytes, ..} => bytes, - &Chunk::ClusterBody {ref bytes, ..} => &bytes + &Chunk::ClusterBody {ref bytes, ..} => bytes.as_ref().as_ref() } } } @@ -35,7 +36,7 @@ mod tests { #[test] fn enough_space_for_header() { - let mut chunk = Chunk::ClusterHead { + let mut chunk: Chunk = Chunk::ClusterHead { keyframe: false, start: 0, end: 0,