ExpertiDict

Rust · Avançado · Inglês · Técnico

MaybeUninit

/ˈmeɪbi ʌnˈɪnɪt/substantivo

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.

Veja também

Todos os termos de Rust