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

devtools/2024/10/25 0:02:45/

文章目录

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

在这里插入图片描述

什么是所有权

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

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

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

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

所有权规则

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


http://www.ppmy.cn/devtools/128541.html

相关文章

GISBox vs CesiumLab:哪款GIS工具更适合你的项目?

在地理信息系统(GIS)领域,越来越多的用户开始关注GIS工具箱的选择,其中GISBox和CesiumLab是两款备受推崇的产品。那么,哪一款更适合你的需求呢?本文将从功能、使用体验和应用场景等方面,对GISBo…

怎么快速在ppt中添加文本框?2个常用的ppt使用技巧盘点!

文本是ppt中最基本的元素,也是我们呈现想法和观点最常使用的媒介,想在ppt中添加文本,必然离不开文本框,那ppt如何添加文本框呢? 对于Powerpoint(简称ppt)而言,可以点击菜单栏的 “插…

智慧升级,知识无界:十大搭建知识库软件助你前行

在知识爆炸的时代,如何高效地管理、整合与利用信息,成为了个人与企业发展的核心竞争力。智慧升级,意味着我们不仅要掌握丰富的知识,更要学会运用工具,让知识无界流通,助力个人成长与企业创新。以下是精心挑…

制作sdk

制作 java-sdk 的两种方式_java sdk-CSDN博客 平时maven工程里 pom 中的引用的依赖就是别人开发好的 sdk 包;工作中为了方便一些开发也需要自定义开发 sdk 包, 精华; 一、两种方式 我们平时引用 sdk 有两种方式: pom 依赖引用…

神经网络model训练时loss=nan【原因总结】

一、Loss functions 中含 F.log_softmax()函数 原因: 由于在计算log_softmax(x)时, 出现log(0)的情况。 解决方法: 给log_softmax的参数x添加一个很小的数: out=F.log_softmax(x+1e-10).二、loss_function(x)函数参数中出现nan 原因: 网络的生成features x 中含有nan. 解…

fluent-ffmpeg操作MP3文件深入解析

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 引言 fluent-ffmpeg是一个功能强大的Node.js库,它为FFmpeg提供了一个流畅的接口。FFmpeg是一个著名的多媒体框架,以处理音频、视频和…

Git的命令合集

关于Git的一些命令合集,会慢慢更新! 20241024程序员节开始写的,记录一下~~ git查看log、查看详细提交记录 会显示之前的提交记录 , 排序由近及远 git log log按q退出 git回退到某个commit命令: 退到/进到指定commit的sha码&…

YOLOv11改进策略【卷积层】| RCS-OSA 通道混洗的重参数化卷积 二次创新C3k2

一、本文介绍 本文记录的是利用RCS-OSA模块优化YOLOv11的目标检测网络模型。RCS-OSA的全称为Reparameterized Convolution based on channel Shuffle - One - Shot Aggregation,即基于通道混洗的重参数化卷积 - 一次性聚合。优势在于RCS模块的重复堆叠确保了特征的重用,并增…