[][src]Crate lfsr

use lfsr::lfsr_lookup;
use lfsr::galois;
use lfsr::LFSR;

lfsr_lookup!(galois32_lookup, galois::Galois32, 10, 20, 5);
lfsr_lookup!(galois32_lookup_big, galois::Galois32, 99_999_000, 100_001_000, 100);

fn main() {
    let mut lfsr = galois::Galois32::default();
    assert_eq!(galois32_lookup(&lfsr), None);

    for _ in 0..9 {
        lfsr.inc();
    }
    assert_eq!(galois32_lookup(&lfsr), None);

    for _ in 9..10 {
        lfsr.inc();
    }
    assert_eq!(galois32_lookup(&lfsr), Some(10));

    for _ in 10..17 {
        lfsr.inc();
    }
    assert_eq!(galois32_lookup(&lfsr), Some(17));

    for _ in 9..20 {
        lfsr.inc();
    }
    assert_eq!(galois32_lookup(&lfsr), None);
}

Re-exports

pub use lfsr_macro_generate::galois_lfsr;
pub use lfsr_macro_lookup::lfsr_lookup;

Modules

galois

Maximum sequence length Galois LFSRs, up to 32 bits wide.

Traits

LFSR

An object-safe part of the LFSR trait that allow to count up, down and to get a current state

LFSRStatic

A non-object-safe part of an LFSR