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}