新版本的变更 / Rust 1.36

// *** 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);