1use std::io::{BufReader, BufWriter};
2
3use anyhow::Result;
4
5use crate::RwBuilder;
6
7#[derive(Debug)]
10pub struct Builder<B>
11where
12 B: RwBuilder,
13{
14 builder: B,
16}
17
18impl<B> Builder<B>
19where
20 B: RwBuilder,
21{
22 #[must_use]
24 pub const fn new(builder: B) -> Self {
25 Self { builder }
26 }
27}
28
29impl<B> RwBuilder for Builder<B>
30where
31 B: RwBuilder,
32 B::Reader: std::io::Read,
33 B::Writer: std::io::Write,
34{
35 type Reader = BufReader<B::Reader>;
36 type Writer = BufWriter<B::Writer>;
37
38 fn reader(&self) -> Result<Self::Reader> {
39 Ok(BufReader::new(self.builder.reader()?))
40 }
41
42 fn writer(&self) -> Result<Self::Writer> {
43 Ok(BufWriter::new(self.builder.writer()?))
44 }
45}