Rust · Intermediário · Inglês · Técnico
RAII
Padrão em que adquirir um recurso e liberá-lo está ligado à vida de um valor. Em Rust, o Drop libera arquivos, travas e memória ao sair de escopo.
Onde usar
Explica por que não existe try/finally ou close manual em Rust: o File e o guard do Mutex se liberam sozinhos. Aparece em discussões de design com Drop.
Em código
use std::fs::File;
use std::io::Write;
let mut f = File::create("a.txt").unwrap();
f.write_all(b"oi").unwrap();
// f é fechado aqui, no fim do escopoExemplos
The file closes itself thanks to RAII.
O arquivo se fecha sozinho graças ao RAII.
Wrap the handle in a type that follows RAII.
Envolva o handle em um tipo que siga o RAII.
Cuidado
A liberação acontece no fim do escopo do dono, não no último uso, então um guard pode segurar uma trava por mais tempo que o esperado.
Origem
Sigla de Resource Acquisition Is Initialization, termo popularizado no C++.