noodles-sam 0.85.0

Sequence Alignment/Map (SAM) format reader and writer
Documentation
use std::mem;

use super::Cigar;

const FOUR_BYTE_PACKED_CHUNK_SIZE: usize = mem::size_of::<u32>();

#[doc(hidden)]
pub enum CigarRef<'a> {
    FourBytePacked(&'a [u8]),
    Cigar(Box<dyn Cigar + 'a>),
}

impl CigarRef<'_> {
    pub fn is_empty(&self) -> bool {
        match self {
            Self::FourBytePacked(src) => src.is_empty(),
            Self::Cigar(cigar) => cigar.is_empty(),
        }
    }

    pub fn len(&self) -> usize {
        match self {
            Self::FourBytePacked(src) => src.len() / FOUR_BYTE_PACKED_CHUNK_SIZE,
            Self::Cigar(cigar) => cigar.len(),
        }
    }
}