]> git.lizzy.rs Git - rust.git/blob - tests/ui/checked_conversions.rs
iterate List by value
[rust.git] / tests / ui / checked_conversions.rs
1 // run-rustfix
2
3 #![warn(clippy::checked_conversions)]
4 #![allow(clippy::cast_lossless)]
5 #![allow(dead_code)]
6 use std::convert::TryFrom;
7
8 // Positive tests
9
10 // Signed to unsigned
11
12 fn i64_to_u32(value: i64) -> Option<u32> {
13     if value <= (u32::max_value() as i64) && value >= 0 {
14         Some(value as u32)
15     } else {
16         None
17     }
18 }
19
20 fn i64_to_u16(value: i64) -> Option<u16> {
21     if value <= i64::from(u16::max_value()) && value >= 0 {
22         Some(value as u16)
23     } else {
24         None
25     }
26 }
27
28 fn isize_to_u8(value: isize) -> Option<u8> {
29     if value <= (u8::max_value() as isize) && value >= 0 {
30         Some(value as u8)
31     } else {
32         None
33     }
34 }
35
36 // Signed to signed
37
38 fn i64_to_i32(value: i64) -> Option<i32> {
39     if value <= (i32::max_value() as i64) && value >= (i32::min_value() as i64) {
40         Some(value as i32)
41     } else {
42         None
43     }
44 }
45
46 fn i64_to_i16(value: i64) -> Option<i16> {
47     if value <= i64::from(i16::max_value()) && value >= i64::from(i16::min_value()) {
48         Some(value as i16)
49     } else {
50         None
51     }
52 }
53
54 // Unsigned to X
55
56 fn u32_to_i32(value: u32) -> Option<i32> {
57     if value <= i32::max_value() as u32 {
58         Some(value as i32)
59     } else {
60         None
61     }
62 }
63
64 fn usize_to_isize(value: usize) -> isize {
65     if value <= isize::max_value() as usize && value as i32 == 5 {
66         5
67     } else {
68         1
69     }
70 }
71
72 fn u32_to_u16(value: u32) -> isize {
73     if value <= u16::max_value() as u32 && value as i32 == 5 {
74         5
75     } else {
76         1
77     }
78 }
79
80 // Negative tests
81
82 fn no_i64_to_i32(value: i64) -> Option<i32> {
83     if value <= (i32::max_value() as i64) && value >= 0 {
84         Some(value as i32)
85     } else {
86         None
87     }
88 }
89
90 fn no_isize_to_u8(value: isize) -> Option<u8> {
91     if value <= (u8::max_value() as isize) && value >= (u8::min_value() as isize) {
92         Some(value as u8)
93     } else {
94         None
95     }
96 }
97
98 fn i8_to_u8(value: i8) -> Option<u8> {
99     if value >= 0 {
100         Some(value as u8)
101     } else {
102         None
103     }
104 }
105
106 fn main() {}