Skip to main content

noodles_sam/header/record/value/map/header/
builder.rs

1use super::{Header, Version};
2use crate::header::record::value::map::{self, builder::BuildError};
3
4/// A SAM header header builder.
5#[derive(Debug, Default)]
6pub struct Builder {
7    version: Option<Version>,
8}
9
10impl map::Builder<Header> {
11    /// Sets a format version.
12    ///
13    /// # Examples
14    ///
15    /// ```
16    /// use noodles_sam::header::record::value::{
17    ///     map::{self, header::Version},
18    ///     Map,
19    /// };
20    ///
21    /// let version = Version::new(1, 6);
22    /// let header = Map::<map::Header>::builder().set_version(version).build()?;
23    /// assert_eq!(header.version(), version);
24    /// # Ok::<_, noodles_sam::header::record::value::map::builder::BuildError>(())
25    /// ```
26    pub fn set_version(mut self, version: Version) -> Self {
27        self.inner.version = Some(version);
28        self
29    }
30}
31
32impl map::builder::Inner<Header> for Builder {
33    fn build(self) -> Result<Header, BuildError> {
34        Ok(Header {
35            version: self.version.unwrap_or_default(),
36        })
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use super::*;
43
44    #[test]
45    fn test_default() {
46        let builder = Builder::default();
47        assert!(builder.version.is_none());
48    }
49}