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

ops/2024/10/25 15:14:56/

文章目录

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

在这里插入图片描述

什么是所有权

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

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

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

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

所有权规则

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


http://www.ppmy.cn/ops/128368.html

相关文章

执行Django项目的数据库迁移命令时报错:(1050, “Table ‘django_session‘ already exists“);如何破?

一、问题描述: 当我们写Django时,由于自己的操作不当,导致执行数据库迁移命令时报错,报错的种类有很多,例如: 迁移文件冲突:可能你有多个迁移文件试图创建同一个表。数据库状态与迁移文件不同…

OJ练习:判断环形链表、返回入环的第一个节点

目录 1. 判断环形链表1.1 判断环形链表拓展 2. 返回入环首节点解法一解法二 1. 判断环形链表 题目来自 141.环形链表 - 力扣(LeetCode) 解题思路:使用快慢指针。 定义一个慢指针slow指向头节点,每次向前走一步定义一个快指针fast指…

使用 NumPy 和 Matplotlib 实现交互式数据可视化

使用 NumPy 和 Matplotlib 实现交互式数据可视化 在数据分析中,交互式可视化可以更好地帮助我们探索和理解数据。虽然 Matplotlib 是静态绘图库,但结合一些技巧和 Matplotlib 的交互功能(widgets、event handlers),我…

2000-2020年各地级市人类需求指数数据

2000-2020年各地级市人类需求指数数据 1、年份:2000、2010、2020年 2、指标:城市名称、HMDI2000、HMDI2010、HMDI2020 3、范围:341个地级市 4、说明:各城市的人类需求指数项目旨在全面评估Z国城市居民在不同社会发展阶段对自然…

前端性能优化之Canvas优化

元素是众多广泛使用的网络 2D 图像渲染标准之一。它被广泛用于游戏及复杂的图像可视化中。然而,随着网站和应用将 canvas 画布推至极限,性能开始成为问题。 Canvas 上下文切换 Canvas 绘制 API 都是在上下文context上进行调用,context不是一个普通的对象,当我们对其赋值的…

苍穹外卖05

redis 1. 启动redis .\redis-server.exe redis.windows.conf 2. 连接redis到客户端(这里我们使用ARDM图形化工具) 新建连接 一旦建立好后就永久直接可用(和mysql一个道理) 连接成功界面

「iOS」——AFNetworking的简单使用

iOS学习 前言原生网络请求使用AFNetworking库进行网络请求具体使用 单例创建的原因单例使用 总结 前言 我们之前学习了通过OC原生内容进行网络申请,AFNetworkikng第三方库的使用,可以极大地简化网络申请的代码量。 原生网络请求 网络请求主要分为上面五…

Python中的人工智能框架与实例

在人工智能(AI)领域,Python因其简洁的语法、丰富的库和强大的社区支持,成为了最受欢迎的编程语言之一。本文将详细介绍Python中的人工智能框架,并通过具体实例展示如何使用这些框架来实现不同的人工智能应用。 一、Python中的人工智能框架 …