[][src]Trait ca_rules::ParseNtLifeGen

pub trait ParseNtLifeGen {
    fn from_bsg(b: Vec<u8>, s: Vec<u8>, gen: usize) -> Self;

    fn parse_rule(input: &str) -> Result<Self, ParseRuleError>
    where
        Self: Sized
, { ... } }

A trait for parsing non-totalistic life-like Generations rules. Both isotropic and non-isotropic rules are supported.

The b / s data of this type of rules consists of possible combinations of states of the 8 neighbors, represented by an 8-bit binary number, that cause a cell to be born / survive.

For example, the following neighborhood is represented by the number 42 = 0b00101010:

0 0 1
0 _ 1
0 1 0

Examples

use ca_rules::ParseNtLifeGen;

#[derive(Debug, Eq, PartialEq)]
struct Rule {
    b: Vec<u8>,
    s: Vec<u8>,
    gen: usize,
}

impl ParseNtLifeGen for Rule {
    fn from_bsg(b: Vec<u8>, s: Vec<u8>, gen: usize) -> Self {
        Rule { b, s, gen }
    }
}

let life = Rule::parse_rule("g4b2c36k7s2ak34-a5-i").unwrap();

assert_eq!(life.gen, 4);

Required methods

fn from_bsg(b: Vec<u8>, s: Vec<u8>, gen: usize) -> Self

Construct the rule from b / s data and the number of states.

Loading content...

Provided methods

fn parse_rule(input: &str) -> Result<Self, ParseRuleError> where
    Self: Sized

The parser.

Loading content...

Implementors

Loading content...