首页 > 其他分享 >Rust的所有权、借用、可变引用 -- 学习随笔

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

时间:2022-12-28 22:55:07浏览次数:36  
标签:mut String -- let fn println 随笔 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
}

 

标签:mut,String,--,let,fn,println,随笔,Rust
From: https://www.cnblogs.com/fanqshun/p/17011467.html

相关文章

  • 编程路-基础提升-第七周-02
    高阶函数应用高级函数是对于函数应用更为简洁,更为高效的方法。递归的了解与应用特点函数内部自己调用自己必须要有出口递归可以用于多种情况下,一般需要和if判断......
  • 函数防抖和节流
    防抖和节流防抖和节流主要目的就是防止一个事件频繁触发或频繁使用DOM。比如scroll事件,滚动事件通常频繁触发,上一次回调没有执行完,下一次的事件就触发了,导致出现的页面抖......
  • URP 空间转换函数
    模型空间转世界空间float3TransformObjectToWorld(float3positionOS)世界空间转模型空间float3TransformWorldToObject(float3positionWS)世界空间转观察空间floa......
  • Damao Technical Support
    Wecansharesomeinformationaboutlakefishing,andhowtousetheDamaos.Ifyoustillhaveanyproblem,[email protected],orvisit......
  • 利用mAP评估目标检测模型
    在本文中,我们将了解如何使用precision和召回率来计算平均精度(mAP)。mAP将真实边界框与检测到的框进行比较并返回分数。分数越高,模型的检测越准确。之前我们详细研究......
  • Vue插槽
    什么是插槽?插槽(Slot)是Vue提出来的一个概念,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有更大的重用性。插槽显不显示、怎样显示是由父组件来控制......
  • CSS
    1.概念:SascadingStyleSheets层叠样式表  层叠:多个样式可以作用在同一个html的元素上,同时生效2.好处:  1.功能强大  2.将内容展示和样式控制分离    *降低......
  • 交换机工作原理
    园区网架构基础交换技术/二层技术路由技术不一定都是三层技术(如RIP封装在UDP520,OSPF封装在IP89)二层交换机工作在数据链路层,对数据帧进行操作。在收到数据帧后,交换机会......
  • 排序-希尔排序
    希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几......
  • MINIGPA103 USBHID评估板入门学习手册基于STM32HAL库
    序由于作者水平有限,文档和视频中难免有出错和讲得不好的地方,欢迎各位读者和观众善意地提出意见和建议,谢谢!第一部分、硬件概述1.1实物概图图1.1Gamepad实物概图如图1......