1
1
error: only `u8` can be cast into `char`
2
- --> $DIR/cast-char.rs:4:23
2
+ --> $DIR/cast-char.rs:12:31
3
3
|
4
- LL | const XYZ : char = 0x1F888 as char;
5
- | ^^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{1F888 }'`
4
+ LL | const VALID_LOW_1 : char = 0x1000 as char; // 4096
5
+ | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{1000 }'`
6
6
|
7
7
note: the lint level is defined here
8
8
--> $DIR/cast-char.rs:1:9
@@ -11,10 +11,120 @@ LL | #![deny(overflowing_literals)]
11
11
| ^^^^^^^^^^^^^^^^^^^^
12
12
13
13
error: only `u8` can be cast into `char`
14
- --> $DIR/cast-char.rs:6:22
14
+ --> $DIR/cast-char.rs:14:31
15
15
|
16
- LL | const XY : char = 129160 as char;
17
- | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{1F888 }'`
16
+ LL | const VALID_LOW_2 : char = 0xD7FF as char; // last valid in lower range
17
+ | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{D7FF }'`
18
18
19
- error: aborting due to 2 previous errors
19
+ error: only `u8` can be cast into `char`
20
+ --> $DIR/cast-char.rs:16:31
21
+ |
22
+ LL | const VALID_LOW_3: char = 0x0500 as char; // cyrillic range
23
+ | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{500}'`
24
+
25
+ error: only `u8` can be cast into `char`
26
+ --> $DIR/cast-char.rs:20:32
27
+ |
28
+ LL | const VALID_HIGH_1: char = 0xE000 as char; // first valid in upper range
29
+ | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{E000}'`
30
+
31
+ error: only `u8` can be cast into `char`
32
+ --> $DIR/cast-char.rs:22:32
33
+ |
34
+ LL | const VALID_HIGH_2: char = 0x1F888 as char; // 129160 - example from issue
35
+ | ^^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{1F888}'`
36
+
37
+ error: only `u8` can be cast into `char`
38
+ --> $DIR/cast-char.rs:24:32
39
+ |
40
+ LL | const VALID_HIGH_3: char = 0x10FFFF as char; // maximum valid Unicode
41
+ | ^^^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{10FFFF}'`
42
+
43
+ error: only `u8` can be cast into `char`
44
+ --> $DIR/cast-char.rs:26:32
45
+ |
46
+ LL | const VALID_HIGH_4: char = 0xFFFD as char; // replacement character
47
+ | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{FFFD}'`
48
+
49
+ error: only `u8` can be cast into `char`
50
+ --> $DIR/cast-char.rs:28:32
51
+ |
52
+ LL | const VALID_HIGH_5: char = 0x1F600 as char; // emoji
53
+ | ^^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{1F600}'`
54
+
55
+ error: surrogate values are not valid for `char`
56
+ --> $DIR/cast-char.rs:34:39
57
+ |
58
+ LL | const INVALID_SURROGATE_1: char = 0xD800 as char; // first surrogate
59
+ | ^^^^^^^^^^^^^^
60
+ |
61
+ = note: surrogate code points [0xD800, 0xDFFF] are reserved for UTF-16 and cannot be used in Rust `char`
62
+
63
+ error: surrogate values are not valid for `char`
64
+ --> $DIR/cast-char.rs:36:39
65
+ |
66
+ LL | const INVALID_SURROGATE_2: char = 0xDFFF as char; // last surrogate
67
+ | ^^^^^^^^^^^^^^
68
+ |
69
+ = note: surrogate code points [0xD800, 0xDFFF] are reserved for UTF-16 and cannot be used in Rust `char`
70
+
71
+ error: surrogate values are not valid for `char`
72
+ --> $DIR/cast-char.rs:38:39
73
+ |
74
+ LL | const INVALID_SURROGATE_3: char = 0xDB00 as char; // middle of surrogate range
75
+ | ^^^^^^^^^^^^^^
76
+ |
77
+ = note: surrogate code points [0xD800, 0xDFFF] are reserved for UTF-16 and cannot be used in Rust `char`
78
+
79
+ error: value exceeds maximum `char` value
80
+ --> $DIR/cast-char.rs:42:37
81
+ |
82
+ LL | const INVALID_TOO_BIG_1: char = 0x110000 as char; // one more than maximum
83
+ | ^^^^^^^^^^^^^^^^
84
+ |
85
+ = note: maximum valid `char` value is 0x10FFFF
86
+
87
+ error: value exceeds maximum `char` value
88
+ --> $DIR/cast-char.rs:44:37
89
+ |
90
+ LL | const INVALID_TOO_BIG_2: char = 0xEF8888 as char; // example from issue
91
+ | ^^^^^^^^^^^^^^^^
92
+ |
93
+ = note: maximum valid `char` value is 0x10FFFF
94
+
95
+ error: value exceeds maximum `char` value
96
+ --> $DIR/cast-char.rs:46:37
97
+ |
98
+ LL | const INVALID_TOO_BIG_3: char = 0x1FFFFF as char; // much larger
99
+ | ^^^^^^^^^^^^^^^^
100
+ |
101
+ = note: maximum valid `char` value is 0x10FFFF
102
+
103
+ error: value exceeds maximum `char` value
104
+ --> $DIR/cast-char.rs:48:37
105
+ |
106
+ LL | const INVALID_TOO_BIG_4: char = 0xFFFFFF as char; // 24-bit maximum
107
+ | ^^^^^^^^^^^^^^^^
108
+ |
109
+ = note: maximum valid `char` value is 0x10FFFF
110
+
111
+ error: only `u8` can be cast into `char`
112
+ --> $DIR/cast-char.rs:52:30
113
+ |
114
+ LL | const BOUNDARY_1: char = 0xD7FE as char; // valid, before surrogate
115
+ | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{D7FE}'`
116
+
117
+ error: only `u8` can be cast into `char`
118
+ --> $DIR/cast-char.rs:54:30
119
+ |
120
+ LL | const BOUNDARY_2: char = 0xE001 as char; // valid, after surrogate
121
+ | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{E001}'`
122
+
123
+ error: only `u8` can be cast into `char`
124
+ --> $DIR/cast-char.rs:56:30
125
+ |
126
+ LL | const BOUNDARY_3: char = 0x10FFFE as char; // valid, near maximum
127
+ | ^^^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{10FFFE}'`
128
+
129
+ error: aborting due to 18 previous errors
20
130
0 commit comments