從語法角度來看,instanceof似乎是檢查操作符左值和操作符右值的關系,不過呵呵呵,實際上在內部上檢查的是操作符左值和操作符右值的prototype對象的關系。
1.某些隱式的借用
在上篇已經提到過,但由于其太出其不意了,所以有必要這里再次進行重申,下面看看這個例子:
//拋出錯誤:error[E0502]: cannot borrow `num` as immutable because it is also borrowed as mutable
fn main(){
let mut num:i32 = 9;
let mut mutable_borrow1:&mut i32 = &mut num;//mutable borrow occurs here
println!("{}", num);//immutable borrow occurs here
}
從這個例子我們可以看出,對于println!()中訪問的變量來說,他其實是一個不可變的借用。
2.避免了迭代失效
先看看代碼例子:
//error: cannot borrow immutable local variable `vec` as mutable
fn main(){
let vec:Vec<i32> = vec![1,2,3];
for num in &vec{
println!("{}", num);
vec.push(6);
}
}
我們在向量上迭代,得到了元素的引用,同時vec本身也是一個不可變引用,所以我們在for函數體內部不能夠對其進行修改。