Coverage Report

Created: 2026-05-18 06:32

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/zmij-1.0.20/src/traits.rs
Line
Count
Source
1
use core::fmt::Display;
2
use core::ops::{Add, BitAnd, BitOr, BitOrAssign, BitXorAssign, Div, Mul, Shl, Shr, Sub};
3
4
pub trait Float: Copy {
5
    const MANTISSA_DIGITS: u32;
6
    const MIN_10_EXP: i32;
7
    const MAX_10_EXP: i32;
8
    const MAX_DIGITS10: u32;
9
}
10
11
impl Float for f32 {
12
    const MANTISSA_DIGITS: u32 = Self::MANTISSA_DIGITS;
13
    const MIN_10_EXP: i32 = Self::MIN_10_EXP;
14
    const MAX_10_EXP: i32 = Self::MAX_10_EXP;
15
    const MAX_DIGITS10: u32 = 9;
16
}
17
18
impl Float for f64 {
19
    const MANTISSA_DIGITS: u32 = Self::MANTISSA_DIGITS;
20
    const MIN_10_EXP: i32 = Self::MIN_10_EXP;
21
    const MAX_10_EXP: i32 = Self::MAX_10_EXP;
22
    const MAX_DIGITS10: u32 = 17;
23
}
24
25
pub trait UInt:
26
    Copy
27
    + From<u8>
28
    + From<bool>
29
    + Add<Output = Self>
30
    + Sub<Output = Self>
31
    + Mul<Output = Self>
32
    + Div<Output = Self>
33
    + BitAnd<Output = Self>
34
    + BitOr<Output = Self>
35
    + Shl<u8, Output = Self>
36
    + Shl<i32, Output = Self>
37
    + Shl<u32, Output = Self>
38
    + Shr<i32, Output = Self>
39
    + Shr<u32, Output = Self>
40
    + BitOrAssign
41
    + BitXorAssign
42
    + PartialOrd
43
    + Into<u64>
44
    + Display
45
{
46
    type Signed: Ord;
47
    fn wrapping_sub(self, other: Self) -> Self;
48
    fn truncate(big: u64) -> Self;
49
    fn enlarge(small: u32) -> Self;
50
    fn to_signed(self) -> Self::Signed;
51
}
52
53
impl UInt for u32 {
54
    type Signed = i32;
55
0
    fn wrapping_sub(self, other: Self) -> Self {
56
0
        self.wrapping_sub(other)
57
0
    }
58
8.58k
    fn truncate(big: u64) -> Self {
59
8.58k
        big as u32
60
8.58k
    }
61
16
    fn enlarge(small: u32) -> Self {
62
16
        small
63
16
    }
64
0
    fn to_signed(self) -> Self::Signed {
65
0
        self as i32
66
0
    }
67
}
68
69
impl UInt for u64 {
70
    type Signed = i64;
71
0
    fn wrapping_sub(self, other: Self) -> Self {
72
0
        self.wrapping_sub(other)
73
0
    }
74
0
    fn truncate(big: u64) -> Self {
75
0
        big
76
0
    }
77
0
    fn enlarge(small: u32) -> Self {
78
0
        u64::from(small)
79
0
    }
80
0
    fn to_signed(self) -> Self::Signed {
81
0
        self as i64
82
0
    }
83
}