noodles_bgzf/reader/
builder.rs

1use std::{
2    fs::File,
3    io::{self, Read},
4    path::Path,
5};
6
7use super::Reader;
8use crate::Block;
9
10/// A BGZF reader builder.
11#[derive(Debug, Default)]
12pub struct Builder;
13
14impl Builder {
15    /// Builds a BGZF reader from a path.
16    ///
17    /// # Examples
18    ///
19    /// ```no_run
20    /// # use std::io;
21    /// use noodles_bgzf as bgzf;
22    /// let reader = bgzf::reader::Builder::default().build_from_path("example.gz")?;
23    /// # Ok::<_, io::Error>(())
24    /// ```
25    pub fn build_from_path<P>(self, src: P) -> io::Result<Reader<File>>
26    where
27        P: AsRef<Path>,
28    {
29        let file = File::open(src)?;
30        Ok(self.build_from_reader(file))
31    }
32
33    /// Builds a BGZF reader from a reader.
34    ///
35    /// # Examples
36    ///
37    /// ```
38    /// # use std::io;
39    /// use noodles_bgzf as bgzf;
40    /// let reader = bgzf::reader::Builder::default().build_from_reader(io::empty());
41    /// ```
42    pub fn build_from_reader<R>(self, reader: R) -> Reader<R>
43    where
44        R: Read,
45    {
46        Reader {
47            inner: reader,
48            buf: Vec::new(),
49            position: 0,
50            block: Block::default(),
51        }
52    }
53}