1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use crate::Integer;
use std::ops::Not;

impl Not for Integer {

    type Output = Self;
    
    fn not(self) -> Self::Output {
        
        !&self
    
    }

}

impl Not for &Integer {

    type Output = Integer;
    
    fn not(self) -> Integer {
        
        let not_bits =
        
            self
                .0
                .iter()
                .map(|x| !x)
                .collect();
        
        Integer(not_bits)
    
    }

}