// *** before: ***
// значение объявлялось «уже существующим», хотя его не было:
// для типов вроде bool или ссылки это неопределённое поведение
let x: i32 = unsafe { std::mem::uninitialized() };
// *** in version 1.36: ***
use std::mem::MaybeUninit;
let mut slot = MaybeUninit::<i32>::uninit();
slot.write(7); // сначала записали
let x = unsafe { slot.assume_init() }; // и только потом объявили готовым
println!("{}", x);