fn masks(pattern: impl Iterator<Item = u8>) -> ([u64; 256], u64) {
    let mut masks = [0; 256];
    let mut bit = 1;
    for c in pattern {
        for &nt in expand_iupac(&c.to_ascii_lowercase()) {
            masks[nt as usize] |= bit;
            masks[nt as usize - 32] |= bit; // Add uppercase version
        }
        bit *= 2;
    }

    (masks, bit / 2)
}
// from shift_and.rs - modified to use IUPAC codes
from shift_and.rs - modified to use IUPAC codes
from shift_and . rs - modified to use IUPAC codes
fn masks(pattern: impl Iterator<Item = u8>) -> ([u64; 256], u64) {
    let mut masks = [0; 256];
    let mut bit = 1;
    for c in pattern {
        for &nt in expand_iupac(&c.to_ascii_lowercase()) {
            masks[nt as usize] |= bit;
            masks[nt as usize - 32] |= bit; // Add uppercase version
        }
        bit *= 2;
    }
    (masks, bit / 2)
}
fn masks ( pattern : impl Iterator < Item = u8 > ) -> ( [ u64 ; 256 ] , u64 ) { let mut masks = [ 0 ; 256 ] ; let mut bit = 1 ; for c in pattern { for & nt in expand_iupac ( & c . to_ascii_lowercase ( ) ) { masks [ nt as usize ] |= bit ; masks [ nt as usize - 32 ] |= bit ; // Add uppercase version } bit *= 2 ; } ( masks , bit / 2 ) }
from shift_and.rs - modified to use IUPAC codes
from shift_and . rs - modified to use IUPAC codes
pattern
impl Iterator<Item = u8>
pattern
impl Iterator<Item = u8>