]> git.proxmox.com Git - rustc.git/blame - src/test/ui/traits/trait-inheritance-num2.rs
New upstream version 1.51.0+dfsg1
[rustc.git] / src / test / ui / traits / trait-inheritance-num2.rs
CommitLineData
b7449926 1// run-pass
223e47cc
LB
2// A more complex example of numeric extensions
3
9346a6ac 4pub trait TypeExt {}
223e47cc
LB
5
6impl TypeExt for u8 {}
7impl TypeExt for u16 {}
8impl TypeExt for u32 {}
9impl TypeExt for u64 {}
c34b1796 10impl TypeExt for usize {}
223e47cc
LB
11
12impl TypeExt for i8 {}
13impl TypeExt for i16 {}
14impl TypeExt for i32 {}
15impl TypeExt for i64 {}
c34b1796 16impl TypeExt for isize {}
223e47cc
LB
17
18impl TypeExt for f32 {}
19impl TypeExt for f64 {}
223e47cc
LB
20
21
9346a6ac 22pub trait NumExt: TypeExt + PartialEq + PartialOrd {}
223e47cc
LB
23
24impl NumExt for u8 {}
25impl NumExt for u16 {}
26impl NumExt for u32 {}
27impl NumExt for u64 {}
c34b1796 28impl NumExt for usize {}
223e47cc
LB
29
30impl NumExt for i8 {}
31impl NumExt for i16 {}
32impl NumExt for i32 {}
33impl NumExt for i64 {}
c34b1796 34impl NumExt for isize {}
223e47cc
LB
35
36impl NumExt for f32 {}
37impl NumExt for f64 {}
223e47cc
LB
38
39
40pub trait UnSignedExt: NumExt {}
41
42impl UnSignedExt for u8 {}
43impl UnSignedExt for u16 {}
44impl UnSignedExt for u32 {}
45impl UnSignedExt for u64 {}
c34b1796 46impl UnSignedExt for usize {}
223e47cc
LB
47
48
49pub trait SignedExt: NumExt {}
50
51impl SignedExt for i8 {}
52impl SignedExt for i16 {}
53impl SignedExt for i32 {}
54impl SignedExt for i64 {}
c34b1796 55impl SignedExt for isize {}
223e47cc
LB
56
57impl SignedExt for f32 {}
58impl SignedExt for f64 {}
223e47cc
LB
59
60
61pub trait IntegerExt: NumExt {}
62
63impl IntegerExt for u8 {}
64impl IntegerExt for u16 {}
65impl IntegerExt for u32 {}
66impl IntegerExt for u64 {}
c34b1796 67impl IntegerExt for usize {}
223e47cc
LB
68
69impl IntegerExt for i8 {}
70impl IntegerExt for i16 {}
71impl IntegerExt for i32 {}
72impl IntegerExt for i64 {}
c34b1796 73impl IntegerExt for isize {}
223e47cc
LB
74
75
1a4d82fc 76pub trait FloatExt: NumExt {}
223e47cc
LB
77
78impl FloatExt for f32 {}
79impl FloatExt for f64 {}
223e47cc
LB
80
81
1a4d82fc 82fn test_float_ext<T:FloatExt>(n: T) { println!("{}", n < n) }
223e47cc
LB
83
84pub fn main() {
85 test_float_ext(1f32);
86}