Skip to main content

Símbolo & | Rust

  • Símbolo & | Rust

Referência de & em Rust

Introdução

O símbolo & em Rust está diretamente relacionado ao sistema de ownership e referências da linguagem. Ele é utilizado para criar uma referência a um valor, permitindo o acesso sem a transferência de posse (ownership).

Tipos de uso de &

Referência Imutável

let x = 10;
let r = &x; // r é uma referência imutável a x
println!("O valor de x é: {}", r);
  • &x cria uma referência imutável ao valor de x.
  • Permite leitura, mas não modificação.
  • Um valor pode ter várias referências imutáveis ao mesmo tempo.

Referência Mutável

let mut x = 10;
let r = &mut x; // r é uma referência mutável a x
*r += 1;
println!("Novo valor de x: {}", r);
  • &mut x cria uma referência mutável.
  • Permite leitura e modificação.
  • Um valor só pode ter uma referência mutável por vez.

Padrão de Borrow Checker

Rust garante em tempo de compilação que:

  • Ou você tem várias referências imutáveis,
  • Ou uma única referência mutável. Nunca ambos ao mesmo tempo.

Uso em Padrões e Match

let x = Some(5);

match x {
Some(&val) => println!("Valor é {}", val),
None => println!("Sem valor"),
}
  • &val extrai o valor de dentro da referência.

Desreferenciamento com *

Quando você tem uma referência (&T), pode acessar seu valor com *:

let x = 42;
let r = &x;
println!("Valor: {}", *r); // desreferencia r

Em Funções

fn imprime(valor: &i32) {
println!("Valor: {}", valor);
}

let x = 100;
imprime(&x);
  • &i32 indica que a função recebe uma referência a um i32.
  • imprime(&x) passa uma referência imutável de x.