logic_gate 0.4.0

Logic Gates
Documentation
use super::{Adder, And, Mux4Way, Or, Signal, Xor};

pub struct Alu;

impl Alu {
    pub fn send_signal(
        a: &Signal,
        b: &Signal,
        s0: &Signal,
        s1: &Signal,
        c: &Signal,
    ) -> (Signal, Signal) {
        let (s, c) = Adder::send_signal(c, a, b);
        (
            Mux4Way::send_signal(
                &s,
                &And::send_signal(a, b),
                &Or::send_signal(a, b),
                &Xor::send_signal(a, b),
                s0,
                s1,
            ),
            c,
        )
    }
}