fn main() {
    let mut data = Box::new(1);
    {
        data = 3;
        let mut other_data = Box::new(2);
    }
}

Quando este código é executado, other_data será alocado por heap dentro do escopo e depois desalocado automaticamente quando sair. O mesmo vale para data: será criado dentro do escopo do main() função e descartada automaticamente quando main() termina. Tudo isso é visível para o compilador no momento da compilação, portanto, erros envolvendo o escopo não compilam.

Propriedade da ferrugem

Rust acrescenta outra ideia -chave ao escopo e Rai: a noção de propriedade. Objetos só podem ter um proprietárioou referência ao vivo, de cada vez. Você pode mover a propriedade de um objeto entre variáveis, mas não pode se referir a um determinado objeto mutuamente em mais de um lugar de cada vez.

fn main() {
    let a = Box::new(5);
    let _b = a;
    drop(a);
}

Neste exemplo, criamos o valor em a com uma alocação de heap, depois atribua _b para a. Ao fazer isso, nós movido o valor fora de a. Então, se tentarmos negociar manualmente o valor com drop()recebemos um erro: use of moved value: `a. Mudar a última linha para drop(_b)porém, e está tudo bem. Nesse caso, estamos manipulando esse valor por meio de seu proprietário atual e válido.