fn main() {
let a = 8u8;
let a = Box::new(3);
std::mem::drop(a);
println!("{a}")
}
Compiler said:
error[E0382]: borrow of moved value: `a`
Why doesn't std::mem::drop()
undo the shadowing to the 1st a?
fn main() {
let a = 8u8;
let a = Box::new(3);
std::mem::drop(a);
println!("{a}")
}
Compiler said:
error[E0382]: borrow of moved value: `a`
Why doesn't std::mem::drop()
undo the shadowing to the 1st a?
mem::drop
isn't a special compiler built-in or anything, its just a normal function. It lets you control when drop code runs for a value, but it doesn't affect the variable scoping. If you want a narrower scope for the inner a
you can use a block
fn main() {
let a = 8u8;
{
let a = Box::new(3);
}
println!("{a}")
}