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}