1pub use labrador_ldpc::decoder::DecodeFrom;
2
3pub trait FromHardBit {
6 fn from_hard_bit(bit: bool) -> Self;
7}
8
9impl<T: DecodeFrom> FromHardBit for T {
10 fn from_hard_bit(bit: bool) -> Self {
11 if bit {
12 -Self::one()
13 } else {
14 Self::one()
15 }
16 }
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22
23 #[test]
24 fn e2e() {
25 assert!(f32::from_hard_bit(true).hard_bit());
26 assert!(!f32::from_hard_bit(false).hard_bit());
27
28 assert!(f64::from_hard_bit(true).hard_bit());
29 assert!(!f64::from_hard_bit(false).hard_bit());
30
31 assert!(i8::from_hard_bit(true).hard_bit());
32 assert!(!i8::from_hard_bit(false).hard_bit());
33
34 assert!(i16::from_hard_bit(true).hard_bit());
35 assert!(!i16::from_hard_bit(false).hard_bit());
36
37 assert!(i32::from_hard_bit(true).hard_bit());
38 assert!(!i32::from_hard_bit(false).hard_bit());
39 }
40}