1 error: the type `&T` does not permit zero-initialization
2 --> $DIR/uninitialized-zeroed.rs:29:32
4 LL | let _val: &'static T = mem::zeroed();
7 | this code causes undefined behavior when executed
8 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
10 note: the lint level is defined here
11 --> $DIR/uninitialized-zeroed.rs:7:9
13 LL | #![deny(invalid_value)]
15 = note: references must be non-null
17 error: the type `&T` does not permit being left uninitialized
18 --> $DIR/uninitialized-zeroed.rs:30:32
20 LL | let _val: &'static T = mem::uninitialized();
21 | ^^^^^^^^^^^^^^^^^^^^
23 | this code causes undefined behavior when executed
24 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
26 = note: references must be non-null
28 error: the type `Wrap<&T>` does not permit zero-initialization
29 --> $DIR/uninitialized-zeroed.rs:32:38
31 LL | let _val: Wrap<&'static T> = mem::zeroed();
34 | this code causes undefined behavior when executed
35 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
37 note: references must be non-null (in this struct field)
38 --> $DIR/uninitialized-zeroed.rs:18:18
40 LL | struct Wrap<T> { wrapped: T }
43 error: the type `Wrap<&T>` does not permit being left uninitialized
44 --> $DIR/uninitialized-zeroed.rs:33:38
46 LL | let _val: Wrap<&'static T> = mem::uninitialized();
47 | ^^^^^^^^^^^^^^^^^^^^
49 | this code causes undefined behavior when executed
50 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
52 note: references must be non-null (in this struct field)
53 --> $DIR/uninitialized-zeroed.rs:18:18
55 LL | struct Wrap<T> { wrapped: T }
58 error: the type `!` does not permit zero-initialization
59 --> $DIR/uninitialized-zeroed.rs:40:23
61 LL | let _val: ! = mem::zeroed();
64 | this code causes undefined behavior when executed
65 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
67 = note: the `!` type has no valid value
69 error: the type `!` does not permit being left uninitialized
70 --> $DIR/uninitialized-zeroed.rs:41:23
72 LL | let _val: ! = mem::uninitialized();
73 | ^^^^^^^^^^^^^^^^^^^^
75 | this code causes undefined behavior when executed
76 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
78 = note: the `!` type has no valid value
80 error: the type `(i32, !)` does not permit zero-initialization
81 --> $DIR/uninitialized-zeroed.rs:43:30
83 LL | let _val: (i32, !) = mem::zeroed();
86 | this code causes undefined behavior when executed
87 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
89 = note: the `!` type has no valid value
91 error: the type `(i32, !)` does not permit being left uninitialized
92 --> $DIR/uninitialized-zeroed.rs:44:30
94 LL | let _val: (i32, !) = mem::uninitialized();
95 | ^^^^^^^^^^^^^^^^^^^^
97 | this code causes undefined behavior when executed
98 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
100 = note: the `!` type has no valid value
102 error: the type `Void` does not permit zero-initialization
103 --> $DIR/uninitialized-zeroed.rs:46:26
105 LL | let _val: Void = mem::zeroed();
108 | this code causes undefined behavior when executed
109 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
111 = note: enums with no variants have no valid value
113 error: the type `Void` does not permit being left uninitialized
114 --> $DIR/uninitialized-zeroed.rs:47:26
116 LL | let _val: Void = mem::uninitialized();
117 | ^^^^^^^^^^^^^^^^^^^^
119 | this code causes undefined behavior when executed
120 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
122 = note: enums with no variants have no valid value
124 error: the type `&i32` does not permit zero-initialization
125 --> $DIR/uninitialized-zeroed.rs:49:34
127 LL | let _val: &'static i32 = mem::zeroed();
130 | this code causes undefined behavior when executed
131 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
133 = note: references must be non-null
135 error: the type `&i32` does not permit being left uninitialized
136 --> $DIR/uninitialized-zeroed.rs:50:34
138 LL | let _val: &'static i32 = mem::uninitialized();
139 | ^^^^^^^^^^^^^^^^^^^^
141 | this code causes undefined behavior when executed
142 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
144 = note: references must be non-null
146 error: the type `Ref` does not permit zero-initialization
147 --> $DIR/uninitialized-zeroed.rs:52:25
149 LL | let _val: Ref = mem::zeroed();
152 | this code causes undefined behavior when executed
153 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
155 note: references must be non-null (in this struct field)
156 --> $DIR/uninitialized-zeroed.rs:15:12
158 LL | struct Ref(&'static i32);
161 error: the type `Ref` does not permit being left uninitialized
162 --> $DIR/uninitialized-zeroed.rs:53:25
164 LL | let _val: Ref = mem::uninitialized();
165 | ^^^^^^^^^^^^^^^^^^^^
167 | this code causes undefined behavior when executed
168 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
170 note: references must be non-null (in this struct field)
171 --> $DIR/uninitialized-zeroed.rs:15:12
173 LL | struct Ref(&'static i32);
176 error: the type `fn()` does not permit zero-initialization
177 --> $DIR/uninitialized-zeroed.rs:55:26
179 LL | let _val: fn() = mem::zeroed();
182 | this code causes undefined behavior when executed
183 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
185 = note: function pointers must be non-null
187 error: the type `fn()` does not permit being left uninitialized
188 --> $DIR/uninitialized-zeroed.rs:56:26
190 LL | let _val: fn() = mem::uninitialized();
191 | ^^^^^^^^^^^^^^^^^^^^
193 | this code causes undefined behavior when executed
194 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
196 = note: function pointers must be non-null
198 error: the type `Wrap<fn()>` does not permit zero-initialization
199 --> $DIR/uninitialized-zeroed.rs:58:32
201 LL | let _val: Wrap<fn()> = mem::zeroed();
204 | this code causes undefined behavior when executed
205 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
207 note: function pointers must be non-null (in this struct field)
208 --> $DIR/uninitialized-zeroed.rs:18:18
210 LL | struct Wrap<T> { wrapped: T }
213 error: the type `Wrap<fn()>` does not permit being left uninitialized
214 --> $DIR/uninitialized-zeroed.rs:59:32
216 LL | let _val: Wrap<fn()> = mem::uninitialized();
217 | ^^^^^^^^^^^^^^^^^^^^
219 | this code causes undefined behavior when executed
220 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
222 note: function pointers must be non-null (in this struct field)
223 --> $DIR/uninitialized-zeroed.rs:18:18
225 LL | struct Wrap<T> { wrapped: T }
228 error: the type `WrapEnum<fn()>` does not permit zero-initialization
229 --> $DIR/uninitialized-zeroed.rs:61:36
231 LL | let _val: WrapEnum<fn()> = mem::zeroed();
234 | this code causes undefined behavior when executed
235 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
237 note: function pointers must be non-null (in this enum field)
238 --> $DIR/uninitialized-zeroed.rs:19:28
240 LL | enum WrapEnum<T> { Wrapped(T) }
243 error: the type `WrapEnum<fn()>` does not permit being left uninitialized
244 --> $DIR/uninitialized-zeroed.rs:62:36
246 LL | let _val: WrapEnum<fn()> = mem::uninitialized();
247 | ^^^^^^^^^^^^^^^^^^^^
249 | this code causes undefined behavior when executed
250 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
252 note: function pointers must be non-null (in this enum field)
253 --> $DIR/uninitialized-zeroed.rs:19:28
255 LL | enum WrapEnum<T> { Wrapped(T) }
258 error: the type `Wrap<(RefPair, i32)>` does not permit zero-initialization
259 --> $DIR/uninitialized-zeroed.rs:64:42
261 LL | let _val: Wrap<(RefPair, i32)> = mem::zeroed();
264 | this code causes undefined behavior when executed
265 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
267 note: references must be non-null (in this struct field)
268 --> $DIR/uninitialized-zeroed.rs:16:16
270 LL | struct RefPair((&'static i32, i32));
271 | ^^^^^^^^^^^^^^^^^^^
273 error: the type `Wrap<(RefPair, i32)>` does not permit being left uninitialized
274 --> $DIR/uninitialized-zeroed.rs:65:42
276 LL | let _val: Wrap<(RefPair, i32)> = mem::uninitialized();
277 | ^^^^^^^^^^^^^^^^^^^^
279 | this code causes undefined behavior when executed
280 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
282 note: references must be non-null (in this struct field)
283 --> $DIR/uninitialized-zeroed.rs:16:16
285 LL | struct RefPair((&'static i32, i32));
286 | ^^^^^^^^^^^^^^^^^^^
288 error: the type `std::ptr::NonNull<i32>` does not permit zero-initialization
289 --> $DIR/uninitialized-zeroed.rs:67:34
291 LL | let _val: NonNull<i32> = mem::zeroed();
294 | this code causes undefined behavior when executed
295 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
297 = note: `std::ptr::NonNull<i32>` must be non-null
299 error: the type `std::ptr::NonNull<i32>` does not permit being left uninitialized
300 --> $DIR/uninitialized-zeroed.rs:68:34
302 LL | let _val: NonNull<i32> = mem::uninitialized();
303 | ^^^^^^^^^^^^^^^^^^^^
305 | this code causes undefined behavior when executed
306 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
308 = note: `std::ptr::NonNull<i32>` must be non-null
310 error: the type `*const dyn std::marker::Send` does not permit zero-initialization
311 --> $DIR/uninitialized-zeroed.rs:70:37
313 LL | let _val: *const dyn Send = mem::zeroed();
316 | this code causes undefined behavior when executed
317 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
319 = note: the vtable of a wide raw pointer must be non-null
321 error: the type `*const dyn std::marker::Send` does not permit being left uninitialized
322 --> $DIR/uninitialized-zeroed.rs:71:37
324 LL | let _val: *const dyn Send = mem::uninitialized();
325 | ^^^^^^^^^^^^^^^^^^^^
327 | this code causes undefined behavior when executed
328 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
330 = note: the vtable of a wide raw pointer must be non-null
332 error: the type `bool` does not permit being left uninitialized
333 --> $DIR/uninitialized-zeroed.rs:75:26
335 LL | let _val: bool = mem::uninitialized();
336 | ^^^^^^^^^^^^^^^^^^^^
338 | this code causes undefined behavior when executed
339 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
341 = note: booleans must be either `true` or `false`
343 error: the type `Wrap<char>` does not permit being left uninitialized
344 --> $DIR/uninitialized-zeroed.rs:78:32
346 LL | let _val: Wrap<char> = mem::uninitialized();
347 | ^^^^^^^^^^^^^^^^^^^^
349 | this code causes undefined behavior when executed
350 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
352 note: characters must be a valid Unicode codepoint (in this struct field)
353 --> $DIR/uninitialized-zeroed.rs:18:18
355 LL | struct Wrap<T> { wrapped: T }
358 error: the type `NonBig` does not permit being left uninitialized
359 --> $DIR/uninitialized-zeroed.rs:81:28
361 LL | let _val: NonBig = mem::uninitialized();
362 | ^^^^^^^^^^^^^^^^^^^^
364 | this code causes undefined behavior when executed
365 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
367 = note: `NonBig` must be initialized inside its custom valid range
369 error: the type `&i32` does not permit zero-initialization
370 --> $DIR/uninitialized-zeroed.rs:84:34
372 LL | let _val: &'static i32 = mem::transmute(0usize);
373 | ^^^^^^^^^^^^^^^^^^^^^^
375 | this code causes undefined behavior when executed
376 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
378 = note: references must be non-null
380 error: the type `&[i32]` does not permit zero-initialization
381 --> $DIR/uninitialized-zeroed.rs:85:36
383 LL | let _val: &'static [i32] = mem::transmute((0usize, 0usize));
384 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
386 | this code causes undefined behavior when executed
387 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
389 = note: references must be non-null
391 error: the type `std::num::NonZeroU32` does not permit zero-initialization
392 --> $DIR/uninitialized-zeroed.rs:86:32
394 LL | let _val: NonZeroU32 = mem::transmute(0);
397 | this code causes undefined behavior when executed
398 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
400 = note: `std::num::NonZeroU32` must be non-null
402 error: the type `std::ptr::NonNull<i32>` does not permit zero-initialization
403 --> $DIR/uninitialized-zeroed.rs:89:34
405 LL | let _val: NonNull<i32> = MaybeUninit::zeroed().assume_init();
406 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
408 | this code causes undefined behavior when executed
409 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
411 = note: `std::ptr::NonNull<i32>` must be non-null
413 error: the type `std::ptr::NonNull<i32>` does not permit being left uninitialized
414 --> $DIR/uninitialized-zeroed.rs:90:34
416 LL | let _val: NonNull<i32> = MaybeUninit::uninit().assume_init();
417 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
419 | this code causes undefined behavior when executed
420 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
422 = note: `std::ptr::NonNull<i32>` must be non-null
424 error: the type `bool` does not permit being left uninitialized
425 --> $DIR/uninitialized-zeroed.rs:91:26
427 LL | let _val: bool = MaybeUninit::uninit().assume_init();
428 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
430 | this code causes undefined behavior when executed
431 | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
433 = note: booleans must be either `true` or `false`
435 error: aborting due to 35 previous errors