noodles_fastq/io/writer/
builder.rs1use std::{
2 fs::File,
3 io::{self, BufWriter, Write},
4 path::Path,
5};
6
7use super::{Writer, DEFAULT_DEFINITION_SEPARATOR};
8
9pub struct Builder {
11 definition_separator: u8,
12}
13
14impl Builder {
15 pub fn set_definition_separator(mut self, definition_separator: u8) -> Self {
26 self.definition_separator = definition_separator;
27 self
28 }
29
30 pub fn build_from_path<P>(self, dst: P) -> io::Result<Writer<Box<dyn Write>>>
40 where
41 P: AsRef<Path>,
42 {
43 let writer = File::create(dst).map(BufWriter::new)?;
44 Ok(self.build_from_writer(writer))
45 }
46
47 pub fn build_from_writer<W>(self, writer: W) -> Writer<Box<dyn Write>>
58 where
59 W: Write + 'static,
60 {
61 Writer {
62 inner: Box::new(writer),
63 definition_separator: self.definition_separator,
64 }
65 }
66}
67
68impl Default for Builder {
69 fn default() -> Self {
70 Self {
71 definition_separator: DEFAULT_DEFINITION_SEPARATOR,
72 }
73 }
74}
75
76#[cfg(test)]
77mod tests {
78 use super::*;
79
80 #[test]
81 fn test_default() {
82 let builder = Builder::default();
83 assert_eq!(builder.definition_separator, b' ');
84 }
85}