noodles_bgzf/writer/
builder.rs

1use std::io::Write;
2
3use super::{CompressionLevel, Writer, MAX_BUF_SIZE};
4
5/// A BGZF writer builder.
6#[derive(Debug, Default)]
7pub struct Builder {
8    compression_level: CompressionLevel,
9}
10
11impl Builder {
12    /// Sets a compression level.
13    ///
14    /// By default, the compression level is set to level 6.
15    ///
16    /// # Examples
17    ///
18    /// ```
19    /// use noodles_bgzf::{self as bgzf, writer::CompressionLevel};
20    ///
21    /// let builder = bgzf::writer::Builder::default()
22    ///     .set_compression_level(CompressionLevel::best());
23    /// ```
24    pub fn set_compression_level(mut self, compression_level: CompressionLevel) -> Self {
25        self.compression_level = compression_level;
26        self
27    }
28
29    /// Builds a BGZF writer from a writer.
30    ///
31    /// # Examples
32    ///
33    /// ```
34    /// # use std::io;
35    /// use noodles_bgzf as bgzf;
36    /// let writer = bgzf::writer::Builder::default().build_from_writer(io::sink());
37    /// ```
38    pub fn build_from_writer<W>(self, writer: W) -> Writer<W>
39    where
40        W: Write,
41    {
42        Writer {
43            inner: Some(writer),
44            position: 0,
45            staging_buf: Vec::with_capacity(MAX_BUF_SIZE),
46            compression_buf: Vec::new(),
47            compression_level: self.compression_level.into(),
48        }
49    }
50
51    /// Builds a BGZF writer from a writer.
52    #[deprecated(since = "0.33.0", note = "Use `Builder::build_from_writer` instead.")]
53    pub fn build_with_writer<W>(self, writer: W) -> Writer<W>
54    where
55        W: Write,
56    {
57        self.build_from_writer(writer)
58    }
59}