cell-automata-1d 0.1.2

Look Stephen Wolfram's cellular automata: https://www.wolframscience.com/nks/p170--cellular-automata/
Documentation
pub struct Rule {
    number: u8
}

impl Rule {
    pub fn new(num: u8) -> Self {
        Rule {
            number: num
        }
    }

    pub fn result_of(&self, triad: [bool; 3]) -> bool {
        let mut rule_bit_ind: u8 = 0;
        for (i, cell) in triad.iter().rev().enumerate() {
            rule_bit_ind += (*cell as u8) * 2u8.pow(i as u32);
        }
        self.bit_at(rule_bit_ind)
    }
    
    fn bit_at(&self, ind: u8) -> bool {
        self.number & (1 << ind) != 0
    }
}

#[cfg(test)]
mod tests {
    use crate::rule::*;

    #[test]
    fn creating_rule_from_number() {
        let rule = Rule::new(0b10000101);
        assert!(rule.bit_at(0));
        assert!(rule.bit_at(7));
        assert!(rule.bit_at(2));
        for i in [1,3,4,5,6] {
            assert!(!rule.bit_at(i));
        }
    }
}