借用所避免的问题

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

3.释放时使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容