从语法角度来看,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函数体内部不能够对其进行修改。