mylib/gates/adder.rs
1use super::And;
2use super::Or;
3use super::Signal;
4use super::Xor;
5
6pub struct Adder;
7
8impl Adder {
9 pub fn send_signal(carry: &Signal, input1: &Signal, input2: &Signal) -> (Signal, Signal) {
10 let helper_signal = Xor::send_signal(input1, input2);
11 (
12 Xor::send_signal(&helper_signal, carry),
13 Or::send_signal(
14 &And::send_signal(&helper_signal, carry),
15 &And::send_signal(input1, input2),
16 ),
17 )
18 }
19}