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}