I'm new to Rust and trying to find out how links work. In the following code, when I want to perform a calculation on a1 , which is i32 , I do not need to i32 it. But with b1 , which is Box , I have to dereference it.
In fact, both let a2 = a1 * 2; and let a3 = *a1 * 2; behave in a similar way. It seems that dereferencing in primitives is optional OR the compiler implicitly does this for us.
fn main(){ let a = 5; let b = Box::new(10); let a1 = &a; let b1 = &b; println!("{} {}", a1, b1); let a2 = a1 * 2; let b2 = (**b1) * 10; let a3 = *a1 * 2; println!("{} {} {}", a2, a3, b2); }
Can someone explain this functionality?
rust
Chathurika sandarenu
source share