use caw_core::{Sig, SigT};
pub fn bitwise_pattern_trigs_8(
trig: impl SigT<Item = bool>,
patterns: Vec<u8>,
) -> [Sig<impl SigT<Item = bool>>; 8] {
let trig = Sig(trig).gate_to_trig_rising_edge();
let mut i = 0;
let pattern_sig = Sig(trig)
.on(move || {
let pattern = patterns[i];
i = (i + 1) % patterns.len();
pattern
})
.shared();
let vec: Vec<_> = (0..8)
.map(move |i| {
pattern_sig.clone().map(move |pattern_opt| {
pattern_opt.is_some_and(|pattern| pattern & (1 << i) != 0)
})
})
.collect();
vec.try_into().unwrap_or_else(|_| unreachable!())
}