美文网首页
Rust借用与所有权转移

Rust借用与所有权转移

作者: 风吹路过的云 | 来源:发表于2021-06-18 17:30 被阅读0次

借用,借用不会引起所有权转移,借用是指对一块内存空间的引用。

fn main() {
    let a1 = String::from("hello");
    let a2 = &a1;
    println!("a1 is: {}", a1);
    println!("a2 is: {}", a2);
}

所有权转移

fn main() {

    let b1 = String::from("rust good good");
    let b2 = b1;
    println!("b1 is: {}", b1);
    println!("b2 is: {}", b2);

}

这时b1的所有权转移给了b2,再来打印b1时,编译出错,因为这时b1不能再使用了。
记住:Rust中的每个值都必定有一个唯一控制者,即,所有者。

error[E0382]: borrow of moved value: `b1`
  --> src/main.rs:15:27
   |
13 |     let b1 = String::from("rust good good");
   |         -- move occurs because `b1` has type `String`, which does not implement the `Copy` trait
14 |     let b2 = b1;
   |              -- value moved here
15 |     println!("b1 is: {}", b1);
   |                           ^^ value borrowed here after move

刚入rust,很容易受C中的&和java中变量之间互相赋值思维的影响:(

相关文章

  • Rust借用与所有权转移

    借用,借用不会引起所有权转移,借用是指对一块内存空间的引用。 所有权转移 这时b1的所有权转移给了b2,再来打印b...

  • Rust入坑指南:智能指针

    在了解了Rust中的所有权、所有权借用、生命周期这些概念后,相信各位坑友对Rust已经有了比较深刻的认识了,今天又...

  • Rust-所有权系统

    今天学习Rust中的所有权系统。按照官方教程所述,所有权系统包含三个部分: 所有权 借用 生命周期 看完发现,C+...

  • Rust 所有权

    认识所有权 所有权是 rust独特的功能,它让 rust无需垃圾回收即可保证内存安全。 什么是所有权 Rust核心...

  • The Rust programming language 读书

    所有权概念是 Rust 语言的核心功能 Rust 没有垃圾回收(GC)机制 Rust 通过所有权和相关工具保障内存...

  • Rust 引用与借用

    引用与借用 这里将s1传给了 f1函数,使用的是&s1,f1定义的形参类型是&String。这些&符号就是引用,它...

  • 移动操作到底干了啥?如何理解移动操作?

    几个有助于理解的小细节, 移动就是一个语义而已,表达“独占”的语义,或者用 Rust 的话说就是 “所有权转移”。...

  • Rust 所有权

    引用[https://www.runoob.com/rust/rust-ownership.html] 所有权规则...

  • 2019-08-27

    Rust思考 所有权,Rust通过所有权机制移除了垃圾回收器,但是所有权机制绝非坦途,它对开发人员提出了更高的要求...

  • Rust 所有权(Ownership)与生存期(Lifetime

    浅析Rust所有权Ownership (一) – 栈堆与位置绑定[https://rsj217.github.io...

网友评论

      本文标题:Rust借用与所有权转移

      本文链接:https://www.haomeiwen.com/subject/gtclyltx.html