noodles_vcf/header/record/value/map/contig/
builder.rs

1use super::Contig;
2use crate::header::record::value::map::{self, builder::BuildError};
3
4#[derive(Default)]
5pub struct Builder {
6    length: Option<usize>,
7    md5: Option<String>,
8    url: Option<String>,
9    idx: Option<usize>,
10}
11
12impl map::builder::Inner<Contig> for Builder {
13    fn build(self) -> Result<Contig, BuildError> {
14        Ok(Contig {
15            length: self.length,
16            md5: self.md5,
17            url: self.url,
18            idx: self.idx,
19        })
20    }
21}
22
23impl map::builder::Indexed<Contig> for Builder {
24    fn set_idx(mut self, idx: usize) -> Self {
25        self.idx = Some(idx);
26        self
27    }
28}
29
30impl map::Builder<Contig> {
31    /// Sets the length.
32    pub fn set_length(mut self, length: usize) -> Self {
33        self.inner.length = Some(length);
34        self
35    }
36
37    /// Sets the MD5 hexdigest.
38    pub fn set_md5<D>(mut self, md5: D) -> Self
39    where
40        D: Into<String>,
41    {
42        self.inner.md5 = Some(md5.into());
43        self
44    }
45
46    /// Set the URL.
47    pub fn set_url<U>(mut self, url: U) -> Self
48    where
49        U: Into<String>,
50    {
51        self.inner.url = Some(url.into());
52        self
53    }
54}