quadrank 0.2.0

Fast rank over binary and size-4 DNA alphabets.
Documentation
use crate::binary::BiRanker;
use succinct::{BitRankSupport, SpaceUsage};

pub use succinct::{JacobsonRank, Rank9};

impl BiRanker for succinct::Rank9<Vec<u64>> {
    fn new_packed(seq: &[u64]) -> Self {
        Self::new(seq.to_vec())
    }

    fn size(&self) -> usize {
        self.total_bytes()
    }

    unsafe fn rank_unchecked(&self, pos: usize) -> u64 {
        self.rank1(pos as u64 - 1)
    }
}

impl BiRanker for succinct::JacobsonRank<Vec<u64>> {
    fn new_packed(seq: &[u64]) -> Self {
        Self::new(seq.to_vec())
    }

    fn size(&self) -> usize {
        self.total_bytes()
    }

    unsafe fn rank_unchecked(&self, pos: usize) -> u64 {
        self.rank1(pos as u64 - 1)
    }
}