#byte #bit #tuple #i2c #enums #send #switch

into-a-byte

Build a byte from tuple of Into<u8>

2 stable releases

1.0.1 Mar 26, 2022

#2578 in Rust patterns

MIT license

7KB
117 lines

into-a-byte

Build ORed byte from members of tuple of Into that acts as a bit switch.

Example

Built byte is used to send to a I2C devise for example.

use into_a_bit::*;

enum FunctionA {
    Enabled = 1 << 3,
    Disabled = 0,
}

enum FunctionB {
    Enabled = 1 << 2,
    Disabled = 0,
}

enum FunctionC {
    Enabled = 1 << 1,
    Disabled = 0,
}

enum FunctionD {
    Enabled = 1,
    Disabled = 0,
}

enums_into_u8!(FunctionA, FunctionB, FunctionC, FunctionD);

fn send_to_device(value: (FunctionA, FunctionB, FunctionC, FunctionD)) {
    // A byte for send to a register for example.
    let byte = value.into_a_byte();
    // TODO
}

fn main() {
    send_to_device((
        FunctionA::Enabled,
        FunctionB::Disabled,
        FunctionC::Enabled,
        FunctionD::Enabled,
    ));
}

No runtime deps