noodles_sam/header/record/value/map/header.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
//! SAM header record header map value.
mod builder;
pub mod group_order;
pub mod sort_order;
pub mod tag;
pub mod version;
pub use self::{tag::Tag, version::Version};
use self::builder::Builder;
use super::{Inner, Map, OtherFields};
/// A SAM header record header map value.
///
/// The header describes file-level metadata. The format version is guaranteed to be set.
#[derive(Clone, Debug, Default, Eq, PartialEq)]
pub struct Header {
pub(crate) version: Version,
}
impl Inner for Header {
type StandardTag = tag::Standard;
type Builder = Builder;
}
impl Map<Header> {
/// Creates a SAM header record header map value with a format version.
///
/// # Examples
///
/// ```
/// use noodles_sam::header::record::value::{
/// map::{self, header::Version},
/// Map,
/// };
///
/// let header = Map::<map::Header>::new(Version::new(1, 6));
/// ```
pub fn new(version: Version) -> Self {
Self {
inner: Header { version },
other_fields: OtherFields::new(),
}
}
/// Returns the format version.
///
/// # Examples
///
/// ```
/// use noodles_sam::header::record::value::{
/// map::{self, header::Version},
/// Map,
/// };
///
/// let header = Map::<map::Header>::new(Version::new(1, 6));
/// assert_eq!(header.version(), Version::new(1, 6));
/// ```
pub fn version(&self) -> Version {
self.inner.version
}
/// Returns a mutable reference to the format version.
///
/// # Examples
///
/// ```
/// use noodles_sam::header::record::value::{map::{self, header::Version}, Map};
/// let mut header = Map::<map::Header>::default();
/// *header.version_mut() = Version::new(1, 5);
/// assert_eq!(header.version(), Version::new(1, 5));
/// ```
pub fn version_mut(&mut self) -> &mut Version {
&mut self.inner.version
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default() {
let header = Map::<Header>::default();
assert_eq!(header.version(), Version::default());
}
}