Tôi mới sử dụng Rust và cố gắng tìm hiểu cách tham chiếu hoạt động. Trong đoạn mã sau đây khi tôi muốn tính toán trên a1
là i32
Tôi không cần phải dereference nó. Nhưng với b1
là Box
, tôi phải dereference nó.Rust có tự động tham chiếu kiểu nguyên thủy không?
Thực tế cả hai số let a2 = a1 * 2;
và let a3 = *a1 * 2;
đều hoạt động tương tự. Dường như dereferencing trong nguyên thủy là tùy chọn HOẶC trình biên dịch là ngầm làm điều đó cho chúng tôi.
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);
}
Ai đó có thể giải thích chức năng này?
Có, các chữ số nguyên không bị ràng buộc mặc định là 'i32'. –