Rust · Avançado · Inglês · Técnico
MaybeUninit
Tipo que representa memória possivelmente não inicializada, para montar valores aos poucos sem ler dados indefinidos. Substituiu o antigo mem::uninitialized, hoje obsoleto.
Onde usar
Aparece em buffers, arrays preenchidos por partes e chamadas FFI que escrevem em uma struct. O assume_init é unsafe e promete que tudo foi escrito.
Em código
use std::mem::MaybeUninit;
let mut x = MaybeUninit::<u32>::uninit();
x.write(7);
let v = unsafe { x.assume_init() };
println!("{v}");Exemplos
Use MaybeUninit for the FFI out parameter.
Use MaybeUninit para o parâmetro de saída da FFI.
Call assume_init only after every field is written.
Chame assume_init só depois de escrever todos os campos.
Cuidado
Ler o valor antes de inicializá-lo é comportamento indefinido, mesmo que seja só um inteiro.