logic-gates 0.1.0

Logic Gates
Documentation
pub struct FourBitAdder;
use super::Adder;
use super::FourBit;
use super::Signal;

impl FourBitAdder {
    pub fn send_signal(carry: &Signal, bits1: &FourBit, bits2: &FourBit) -> (FourBit, Signal) {
        let (sum1, carry1) = Adder::send_signal(carry, &bits1.bit4, &bits2.bit4);
        let (sum2, carry2) = Adder::send_signal(&carry1, &bits1.bit3, &bits2.bit3);
        let (sum3, carry3) = Adder::send_signal(&carry2, &bits1.bit2, &bits2.bit2);
        let (sum4, carry4) = Adder::send_signal(&carry3, &bits1.bit1, &bits2.bit1);

        (
            FourBit {
                bit1: sum4,
                bit2: sum3,
                bit3: sum2,
                bit4: sum1,
            },
            carry4,
        )
    }
}