ExpertiDict

Rust · Intermediário · Inglês · Técnico

RAII

/ˈɑːɹ ˈeɪ ˈaɪ ˈaɪ/substantivo

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 escopo

Exemplos

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++.

Veja também

Todos os termos de Rust