Rust编程语言变量的所有权(ownership)

news/2024/10/22 14:17:03/

文章目录

      • 什么是所有权
      • 所有权规则
      • 转让所有权
        • 变量与数据交互的方式(一):移动
        • 变量与数据交互的方式(二):克隆
        • 只在栈上的数据:拷贝
      • 所有权与函数
      • 返回值与作用域
      • 引用和借用
      • 可变引用
      • 悬垂引用(Dangling References)
      • 引用的规则

在这里插入图片描述

什么是所有权

所有权ownership)是Rust 的核心功能之一。所有程序都必须管理其运行时使用计算机内存的方式。Rust 则选择通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序。

所有权就是一个东西属不属于你,你有没有权力随意处理它,比如送人,比如扔掉。

Rust 语言中每一值都有一个对应的变量,这个变量就成为这个值的 所有者。从某些方面说,定义一个变量就是为这个变量和它存储的数据定义一种所有者管理,声明这个值由这个变量所有。

例如,对于 let age = 30 这条语句,相当于声明 30 这个值由变量 age 所有

所有权规则

首先,让我们看一下所有权的规则。当我们通过举例说明时,请谨记这些规则:


http://www.ppmy.cn/news/1541073.html

相关文章

ARAIM在航空领域的重要性及其面临的主要挑战

笔者这篇博客主要目的是总结目前ARAIM技术面临的主要问题,为做高级接收机自主完好性的小伙伴提供论文创新点思路。对于研究方向迷茫的小伙伴可以参考ARAIM目前存在的主要问题,展开相关研究,希望该博客对读者有所帮助。 1.全球卫星导航系统发…

Axure使用教程,产品经理如何用Axure制作一份高质量高保真的OA办公管理系统原型?附源文件下载

OA办公管理系统(Office Automation Management System)是通过现代计算机和通信技术,将办公过程中的信息、数据和流程进行自动化处理,以提高工作效率、降低成本的一套系统。构建OA办公管理系统涉及多个步骤,以下是一个概…

手写模拟Spring的基本功能

文章目录 1. Spring的基本功能2. 容器启动 容器启动,即创建容器对象并赋予配置对象3. BeanDefinition扫描4. Bean的生命周期5. 单例Bean与多例Bean6. 依赖注入7. AOP8. Aware 回调9. 初始化10. BeanPostProcessor附录: 1. Spring的基本功能 2. 容器启动 …

Ajax:跨域、防抖和节流、HTTP协议

在善意的“双向奔赴”中,每个普通人都如星辰,微小但释放着自己的光芒,交织成灿烂的星河 文章目录 跨域防抖和节流HTTP协议HTP状态码以及代表意义错误代码的影响移动的小天使 跨域 同源策略 概念:协议,域名&#xff0c…

大数据-178 Elasticsearch Query - Java API 索引操作 文档操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

uniapp 获取签名证书 SHA1 自有证书签名打包

1.登录你的Dcloud 账户 2.找到我的应用菜单 3.点开某个应用 4.查看证书详情,里面有SHA1 和别名,密码,下载证书用于云打包,可以选择自有证书,输入别名,密码打包

Linux网络编程(六)-TCP协议服务端及代码实现

1.概述 在讲述了那么多以后我们终于来到了代码阶段的讲解了,先放一张流程图便于大家理解。接着会为大家讲述具体的实现过程。 通过上图我们可以看到一个完整的Socket网络通信,是有客户端和服务端两部分代码组成的,即两个程序(你发…

Android TextView实现一串文字特定几个字改变颜色

遇到一个需求,让Android端实现给定一个字符串指定下标的几个字颜色与其他字颜色不一致。 主要是用ForegroundColorSpan这个API来传入颜色值,用SpannableString来设置指定索引下标的字的颜色值。 这里通过给定一个输入文字描述框,要求输入指定…