splitbits 0.1.2

Concise bit field extraction
Documentation
extern crate splitbits;

use splitbits::splitbits_named;

#[test]
fn onefield() {
    let field = splitbits_named!(
        0b1101_1101_1000_0100_0000_0000_1111_1001,
         ".... bbbb bbbb bbbb bbbb bbb. .... ....",
    );

    assert_eq!(field, 0b110_1100_0010_0000_0000u32);
}

#[test]
fn named() {
    let (greatest, of, all, time) = splitbits_named!(
        0b1101110111110001,
         "aaaaaaaaadddefff",
    );
    assert_eq!(greatest, 0b110111011u16);
    assert_eq!(of, 0b111u8);
    assert_eq!(all, false);
    assert_eq!(time, 0b001u8);
}

#[test]
fn named_preserve_ordering() {
    let (greatest, of, all, time) = splitbits_named!(0b1000_1011, "bdda.cc.");
    assert_eq!(greatest, true);
    assert_eq!(of, 0b00u8);
    assert_eq!(all, false);
    assert_eq!(time, 0b01u8);
}

#[test]
fn named_existing_variables() {
    let greatest; let of; let all; let time;
    (greatest, of, all, time) = splitbits_named!(
        0b1101110111110001,
         "aaaaaaaaadddefff",
    );
    assert_eq!(greatest, 0b110111011u16);
    assert_eq!(of, 0b111u8);
    assert_eq!(all, false);
    assert_eq!(time, 0b001u8);
}