当前位置: 首页 > news >正文

Rust星号(*)的作用-基础篇

在Rust中,*符号具有多种不同的用途,具体取决于它的使用方式。以下是Rust中*常见的用法.

1.解引用指针

当作为一元运算符放在指针变量之前时,*用于解引用指针并访问它指向的值。在Rust中,通常更推荐使用引用而不是原始指针。引用提供了更多的安全性和可读性。解引用引用时,不需要使用 *,因为 Rust 自动处理引用的解引用。例如:

fn main() {let x = 42;let ptr = &x;let value = *ptr; // 解引用指针println!("{}", value);
}

在这个示例中,*ptr从指针指向的内存位置检索值42

2.类型注解

在函数签名和类型注解中,*用于表示原始指针类型。例如:

fn process_data(data: *const i32) {// 函数接受一个指向i32的原始指针
}

在这里,*const i32表示对不可变的原始指针类型。

3. 创建原始(raw)指针

在表达式中作为&的右侧使用*,用于从引用创建原始指针。和引用一样,原始指针是不可变或可变的,分别写作 *const T*mut T

fn main() {let x = 42;let ptr: *const i32 = &x; // 从引用创建原始指针let mut y = 42;let ptr1: *mut i32 = &mut y;
}

在Rust中,您不能直接将不可变引用(&)赋值给可变指针(*mut)或将可变引用赋值给不可变指针(*const)。这是因为可变指针允许对数据进行可变修改,而不可变引用要求数据是不可变的,这两者之间存在不兼容性。

请注意,使用可变指针需要放在 unsafe 块内,并且需要格外小心,以确保不会导致不安全性问题。

引用解引用 (&T&mut T)

在Rust中,通常更推荐使用引用而不是原始指针。引用提供了更多的安全性和可读性。解引用引用时,不需要使用 *,因为 Rust 自动处理引用的解引用。

fn main() {let mut x = 42;let reference = &x; // 创建不可变引用// 不需要使用 * 解引用引用println!("Value: {}", reference);let mutable_reference = &mut x; // 创建可变引用// 不需要使用 * 解引用引用*mutable_reference = 100; // 修改值println!("Value: {}", x); // 打印修改后的值
}

4.乘法运算符

在算术表达式中,*用作乘法运算符。例如:

let result = 3 * 4; // 将3和4相乘

在大部分语言中都是作为乘法运算符

5. 通配符导入

在模块声明中,*可用于通配符导入,以从模块中导入所有项目。Java语言中也是可以用于通配符。例如

mod my_module {pub fn function1() {}pub fn function2() {}
}use my_module::*; // 从my_module导入所有项目

在这种情况下,*用于导入所有项目(在这个示例中是函数)从my_module模块中。*的含义取决于它在代码中的上下文,因此在Rust代码中使用时需要注意它的用法。

我是蚂蚁背大象,文章对你有帮助给项目点个❤关注我GitHub:mxsm,文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsm@apache.com

相关文章:

Rust星号(*)的作用-基础篇

在Rust中,*符号具有多种不同的用途,具体取决于它的使用方式。以下是Rust中*常见的用法. 1.解引用指针 当作为一元运算符放在指针变量之前时,*用于解引用指针并访问它指向的值。在Rust中,通常更推荐使用引用而不是原始指针。引用…...

企业该如何选择数字化转型工具?

对于希望在当今快速发展的商业环境中增强运营、提高效率并保持竞争力的公司来说,选择正确的数字化转型工具是一项关键决策。以下是选择数字化转型工具的关键步骤和注意事项: 1.定义业务目标: 清楚地阐明您的业务目的和目标。了解您希望通过数…...

element ui 中 el-button重新渲染后disabled属性失效

调试发现:disabled绑定的值和显示没有保持一致&#xff0c;发现是disabled属性失效 解决方式&#xff1a; 给标签添加key 比如&#xff1a;key“isOldVersion” <el-form-item><el-button type"primary" style"margin-left: 100px;" click"…...

WebRTC AIMD算法用处

WebRTC使用AIMD&#xff08;Additive Increase Multiplicative Decrease&#xff09;算法来进行码率控制。 在WebRTC中&#xff0c;码率控制的目标是优化音视频传输的质量和稳定性&#xff0c;以适应网络状况的变化。具体而言&#xff0c;AIMD算法通过监测网络的拥塞情况&…...

迁移kubelet、docker和containerd工作目录

文章目录 问题背景迁移Docker停止 Docker 服务修改配置移动文件重新启动 Docker 服务 containerd停止服务修改配置移动文件重新启动服务 kubelet&#xff08;遇到问题待解决&#xff09;停止服务修改配置移动文件&#xff08;遇到问题待解决&#xff09;重新启动服务 使用的版本…...

Go 重构:尽量避免使用 else、break 和 continue

今天&#xff0c;我想谈谈相当简单的事情。我不会发明什么&#xff0c;但我在生产代码中经常看到这样的事情&#xff0c;所以我不能回避这个话题。 我经常要解开多个复杂的 if else 结构。多余的缩进、过多的逻辑只会加深理解。首先&#xff0c;这篇文章的主要目的是让代码更透…...

Unity3D 程序员常用的核心类及方法详解

Unity3D是一款强大的游戏引擎&#xff0c;广泛应用于游戏开发领域。作为Unity3D程序员&#xff0c;掌握常用的核心类及方法是非常重要的。本文将详细介绍Unity3D中程序员常用的核心类及方法&#xff0c;并给出代码实现。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff…...

76.C++ STL list容器

目录 1.什么是list容器 2.list构造函数 3. 元素插⼊和删除操作 4.大小操作 5.赋值操作 6.数据存取操作 7.反转、排序 1.什么是list容器 list 是 C 标准库提供的双向链表容器。它与 vector 和 deque 不同&#xff0c;不是连续的内存块&#xff0c;而是由节点组成的链表结…...

使用FreeMarker导出word文档(支持循环导出实时多张图片)

续上一期的更新内容 &#xff0c;导出的是单张图片&#xff0c;直接在路径的src 里面填写对应的占位符&#xff0c;就可以了&#xff0c;随着需求的变化&#xff0c;那么今天我们继续往下写一个循环导出多张图片到word里面。 使用FreeMarker导出word文档(支持导出单张图片) …...

Evaluating Open-Domain Question Answering in the Era of Large Language Models

本文是LLM系列文章&#xff0c;针对《Evaluating Open-Domain Question Answering in the Era of Large Language Models》的翻译。 大语言模型时代的开放域问答评价 摘要1 引言2 相关工作3 开放域QA评估4 评估开放域QA模型的策略5 正确答案的语言分析6 CuratedTREC上的正则表…...

基于安卓Android的掌上酒店预订APP

项目介绍 网络的广泛应用给生活带来了十分的便利。所以把掌上酒店预订与现在网络相结合&#xff0c;利用java技术建设掌上酒店预订APP&#xff0c;实现掌上酒店预订的信息化。则对于进一步提高掌上酒店预订发展&#xff0c;丰富掌上酒店预订经验能起到不少的促进作用。 掌上酒…...

搭建CNFS文件系统

1.概念&#xff1a; CNFS &#xff08;Cluster Network File System&#xff09;是 GPFS 中的一种模式&#xff0c;用于配置和管理多台服务器&#xff08;节点&#xff09;之间的文件共享和数据访问 它允许多个节点同时访问和共享文件系统的数据&#xff0c;以实现高性能、高可…...

网络工程师知识点7

111、IS-IS路由器的三种类型&#xff1f; Level-1路由器&#xff08;只能创建level-1的LSDB&#xff09; Level-2路由器&#xff08;只能创建level-2的LSDB&#xff09; Level-1-2路由器&#xff08;路由器默认的类型&#xff0c;能同时创建level-1和level-2的LSDB&#xff09;…...

C++ 八股文:类析构

继承层次中&#xff0c;为什么基类析构函数是虚函数&#xff1f; 在继承层次中&#xff0c;将基类的析构函数声明为虚函数的主要原因是为了支持多态和安全的资源释放。以下是为什么基类的析构函数通常应该是虚函数的原因&#xff1a; 多态析构&#xff1a; 当使用基类指针&a…...

第三章 内存管理 八、两级页表

目录 一、定义 二、如何实现地址变换 三、注意 四、总结 一、定义 二级页表是一种分层的虚拟内存管理机制。在二级页表中&#xff0c;虚拟地址被分成两个层次&#xff0c;第一层是页目录&#xff0c;第二层是页表。通过这种方式&#xff0c;二级页表可以管理更大的虚拟内存…...

新时代高效记账:自动化智能如何进行财务管理

随着科技的不断发展&#xff0c;自动化智能已经逐渐渗透到我们生活的各个领域。在财务管理中&#xff0c;自动化智能的应用显得尤为重要。它不仅可以提高财务管理的效率和精度&#xff0c;还能帮助我们更好地规划和掌控公司的财务状况 晨曦记账本提供了多种高效财务管理工具。…...

Linux小程序---进度条

一&#xff1a;\r 和 \n \r --- 回车 --- 使光标回到这一行的开头 \n --- 换行 --- 会来到下一行与之平行的位置 缓冲区的问题&#xff1a; <1>: \n 的示例 正常输出 hehehehe 。 <2>: \r 的示例 为了方便观察&#xff0c;加入一个 sleep &#xff08;休眠函数…...

【Java笔试强训】Day1(100449-组队竞赛 、OR63 删除公共字符)

100449-组队竞赛 链接&#xff1a;组队竞赛 题目&#xff1a; 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。 例如: 一个队伍三个…...

C语言进行实验:通过程序实现线算图取值【支持VC++ 6.0编辑器环境运行】

背景&#xff1a; 一、实验目的和要求 1、能描述数据基本类型及其常量的表示方法&#xff1b; 2、会对变量进行定义及初始化&#xff1b; 3、能使用运算符与表达式对变量赋值&#xff1b; 4、会描述C语句的概念及种类、C语言常用的输入/出方式&#xff1b; 5、会设计顺序…...

信息检索与数据挖掘|(四)索引构建

目录 &#x1f4da;硬件基础 &#x1f4da;基于块的排序索引方法 &#x1f407;BSBI算法(blocked sort-based indexing) &#x1f4da;内存式单遍扫描索引构建方法 &#x1f407;SPIMI算法(single-pass in-memory indexing) &#x1f4da;分布式索引构建方法 &#x1f4d…...

《基于S7-1200PLC的全自动洗衣机控制系统设计》 一、设计任务书 1.任务描述

《基于S7-1200PLC的全自动洗衣机控制系统设计》 一、设计任务书 1.任务描述&#xff1a;洗衣机的进水和排水分别由进水电磁阀和排水电磁阀来执行 进水时&#xff0c;通过电控系统时进水阀打开&#xff0c;将水由外桶排到机外 洗涤正转、反转由洗涤电动机驱动波盘正、反转来实现…...

3分钟上手PCL2-CE:打造专属Minecraft启动环境的完整指南

3分钟上手PCL2-CE&#xff1a;打造专属Minecraft启动环境的完整指南 PCL2-CE社区版是一款开源游戏配置工具&#xff0c;致力于为Minecraft玩家提供高效、灵活的游戏环境管理方案。通过智能化配置和模块化设计&#xff0c;让玩家告别繁琐设置&#xff0c;轻松掌控游戏入口&…...

Cursor + Claude 3.7:解锁高效编程新范式

1. 为什么开发者需要CursorClaude 3.7组合 最近在重构一个遗留的电商系统时&#xff0c;我遇到了所有程序员都头疼的问题&#xff1a;面对20万行混杂着jQuery和Vue的祖传代码&#xff0c;光是理清支付模块的业务逻辑就花了三天。直到同事推荐了CursorClaude 3.7这个组合&#x…...

PyTorch升级1.10.1后GPU失效?3分钟搞定CUDA环境回滚(以Colab对比为例)

PyTorch 1.10.1 GPU失效排查与CUDA环境精准回滚指南 当你满心欢喜地升级到PyTorch最新版本1.10.1&#xff0c;准备继续你的深度学习项目时&#xff0c;突然发现GPU无法正常工作——这种"昨天还能用&#xff0c;今天突然报错"的场景让许多开发者抓狂。本文将带你深入分…...

发动机阀系系统设计避坑指南:AVL-Excite中这10个元素配置最容易出错

发动机阀系系统设计避坑指南&#xff1a;AVL-Excite中这10个元素配置最容易出错 在发动机阀系系统的仿真建模中&#xff0c;AVL-Excite作为行业标杆工具&#xff0c;其强大的功能背后也隐藏着诸多配置陷阱。许多工程师在完成基础建模后&#xff0c;往往会在看似简单的参数设置上…...

如何评估单网页SEO的ROI

如何评估单网页SEO的ROI 在当今的数字化时代&#xff0c;网站的成功与否往往取决于其搜索引擎优化&#xff08;SEO&#xff09;的效果。而在SEO的众多策略中&#xff0c;单网页SEO的ROI&#xff08;投资回报率&#xff09;评估尤为重要。了解如何评估单网页SEO的ROI&#xff0…...

从数学原理到代码实现:手把手推导Transformer时间复杂度公式(附PyTorch示例)

从数学原理到代码实现&#xff1a;手把手推导Transformer时间复杂度公式&#xff08;附PyTorch示例&#xff09; 在自然语言处理领域&#xff0c;Transformer架构已经成为事实上的标准模型。但当我们处理长文本序列时&#xff0c;经常会遇到计算资源急剧增加的问题。这背后的核…...

RePKG全解析:从资源提取到壁纸开发的终极解决方案

RePKG全解析&#xff1a;从资源提取到壁纸开发的终极解决方案 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 在数字内容创作领域&#xff0c;尤其是动态壁纸开发和游戏资源处理中&…...

三自由度机械手-工业机器人(说明书+CAD图纸)

三自由度机械手作为工业机器人领域的典型代表&#xff0c;其核心作用在于通过三个独立运动轴的协同控制&#xff0c;实现末端执行器在三维空间内的精准定位与灵活操作。这种结构通过旋转、俯仰与伸缩三个方向的复合运动&#xff0c;能够覆盖工作空间内的任意目标点&#xff0c;…...

大海捞针:从海量真实世界5G-A基站数据中追踪无人机

大家读完觉得有帮助记得关注和 点赞&#xff01;&#xff01;&#xff01; 摘要 无人机在日常生活中的潜在应用使得对其监控变得至关重要。然而&#xff0c;现有的无人机监控系统通常依赖于摄像头、激光雷达或雷达&#xff0c;这些系统的感知范围有限或部署成本高昂&#xff0…...