Fácil Rust
Box simples
Enunciado
Crie um Box<i32> com o valor 10 e imprima o valor desreferenciado. Depois, modifique o valor para 20 e imprima novamente.
Requisitos
- Use
Box::newpara criar o valor. - Use
*para desreferenciar e modificar. - Imprima o valor antes e depois da modificação.
Código inicial
fn main() {
// seu código aqui
}
Saída esperada
Valor inicial: 10
Valor modificado: 20
Ver dica
Para modificar o valor dentro do Box, use *minha_box = novo_valor.
Mostrar solução
fn main() {
// Cria um Box com valor 10
let mut numero = Box::new(10);
println!("Valor inicial: {}", *numero);
// Modifica o valor dentro do Box
*numero = 20;
println!("Valor modificado: {}", *numero);
}
Passo a passo
Box::new(10)aloca um inteiro no heap e retorna umBox<i32>.println!usa*numeropara acessar o valor dentro do Box (desreferência).*numero = 20altera o valor no heap através do ponteiro.- O Box é liberado automaticamente ao final do escopo.
Por que funciona
O Box é um ponteiro inteligente que possui o valor no heap. A desreferência (*) permite acessar e modificar o valor como se fosse uma variável normal. A mutabilidade do binding (mut numero) permite alterar o conteúdo.
Erros comuns
- Esquecer
mutno binding:let numero = Box::new(10); *numero = 20;gera erro de compilação. - Tentar modificar sem desreferenciar:
numero = Box::new(20);não altera o valor interno, apenas move o Box. - Usar
numerosem*em contextos que exigem o valor:let x = numero + 1;não compila; use*numero + 1.
Outra forma de resolver
Usar Box::new e depois .as_mut() para obter uma referência mutável:
let mut numero = Box::new(10);
*numero.as_mut() = 20;
Mas a desreferência direta é mais idiomática.
Saída esperada
Valor inicial: 10
Valor modificado: 20