noodles_cram/file_definition/
version.rs

1/// A CRAM file definition version.
2///
3/// This is also called the format number.
4#[derive(Clone, Copy, Debug, Eq, PartialEq)]
5pub struct Version {
6    major: u8,
7    minor: u8,
8}
9
10impl Version {
11    /// Creates a file definition version.
12    ///
13    /// # Examples
14    ///
15    /// ```
16    /// use noodles_cram::file_definition::Version;
17    /// let version = Version::new(3, 0);
18    /// ```
19    pub fn new(major: u8, minor: u8) -> Self {
20        Self { major, minor }
21    }
22
23    /// Returns the major version.
24    ///
25    /// # Examples
26    ///
27    /// ```
28    /// use noodles_cram::file_definition::Version;
29    /// let version = Version::new(3, 0);
30    /// assert_eq!(version.major(), 3);
31    /// ```
32    pub fn major(&self) -> u8 {
33        self.major
34    }
35
36    /// Returns the minor version.
37    ///
38    /// # Examples
39    ///
40    /// ```
41    /// use noodles_cram::file_definition::Version;
42    /// let version = Version::new(3, 0);
43    /// assert_eq!(version.minor(), 0);
44    /// ```
45    pub fn minor(&self) -> u8 {
46        self.minor
47    }
48}
49
50impl Default for Version {
51    fn default() -> Self {
52        Self::new(3, 0)
53    }
54}
55
56#[cfg(test)]
57mod tests {
58    use super::*;
59
60    #[test]
61    fn test_default() {
62        assert_eq!(Version::default(), Version::new(3, 0));
63    }
64}