1use crate::{Result, RwBuilder};
2
3#[derive(Debug)]
6#[must_use]
7pub struct Lz4Builder<B>
8where
9 B: RwBuilder,
10{
11 builder: B,
13}
14
15impl<B> Lz4Builder<B>
16where
17 B: RwBuilder,
18{
19 pub const fn new(builder: B) -> Self {
21 Self { builder }
22 }
23}
24
25impl<B> RwBuilder for Lz4Builder<B>
26where
27 B: RwBuilder,
28{
29 type Reader = lz4_flex::frame::FrameDecoder<B::Reader>;
30
31 fn reader(&self) -> Result<Self::Reader> {
32 let reader = self.builder.reader()?;
33 Ok(lz4_flex::frame::FrameDecoder::new(reader))
34 }
35
36 type Writer = lz4_flex::frame::FrameEncoder<B::Writer>;
37
38 fn writer(&self) -> Result<Self::Writer> {
39 let writer = self.builder.writer()?;
40 Ok(lz4_flex::frame::FrameEncoder::new(writer))
41 }
42}