Rust的所有权、借用、可变引用 -- 学习随笔

Rust所有权规则:

1. Rust中每一个变量都是自己值的所有者;

2. 每一个值在任一时刻只有一个所有者;

3. 所有者(变量)离开所属作用域后,这个值被丢弃;

fn main() {
    let s1 = String::from("Hello!");
    let s2 = s1;
    println!("s2 passed: {}", s2);
    println!("s1 failed: {}", s1); // value borrowed here after move
}

 

Rust中的借用(不让所有权发生转移 "&")

复制代码
fn echo(s: &String) {
    println!("echo: {}", s);
}

fn main() {
    let s = String::from("A");
    echo(&s);
    // 可以正常输出
    println!("main output: {}", s);
}
复制代码

 

Rust中的可变引用

复制代码
fn change(s: &mut String) {
  s.push_str(" changed!");
}

fn main() {
  let mut s = String::from("variable-s");
  change(&mut s);
  println!("after change: {}", s);
}
复制代码

同一时刻至多只能有一个可变引用

fn main() {
  let mut s = String::from("var s");
  let s_ref1 = &mut s;
  let s_ref2 = &mut s;
  println!("{}", s_ref1);
  println!("{}", s_ref2); // error: second mutable borrow occurs here
}

 

posted @   樊顺  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2018-12-28 express-http-proxy 的基础使用
2018-12-28 redux中createStore方法的默认参数
点击右上角即可分享
微信分享提示