【04】RUST特性
文章目录
- 隐藏shadowing
- 所有权ownership
- 堆区&栈区
- 所有权规则
- 变量&数据
- Copy Trait与Drop Trait
- Copy Trait
- Drop Trait
- 移动
- 克隆
- 函数参数与返回值的所有权
- 参数
- 引用
- 可变引用
- 悬垂引用
- slice
- 生命周期
隐藏shadowing
有点像同名覆盖
let mut guess = String::new();let guess: u32 = guss.trim().parse().expect("Please type a number!");
所有权ownership
通过所有权系统管理内存。通过编译时期的严格检查,从而保证在运行时所有权系统不会减慢程序。
堆区&栈区
| 类型 | 内存管理 | 大小 | 特点 | 存储 |
|---|---|---|---|---|
| 栈区 | 已知大小 | 一般较少 | 先进后出 | 栈用于存储函数调用的上下文、局部变量和一些临时数据。 |
| 堆区 | 未知大小,动态分配内存 | 内存大于栈区 | 需要显示管理,分配和释放 | 存储需要在多个函数或更长生命周期中使用的数据。 |
所有权规则
- 每个值只有一个所有者(owner)。
- 值在任一时刻有且只有一个所有者。
- 当所有者(变量)离开作用域,这个值将被丢弃。
变量&数据
Copy Trait与Drop Trait
Rust 中,类型不能同时实现 Copy Trait 和 Drop Trait。如果为一个类型实现了 Drop Trait,那么无法为其实现 Copy Trait。
Copy Trait
Copy Trait是一个标记(marker)trait,用于表示一个类型的值可以通过**按位复制(bitwise copy)**的方式进行复制,而不影响原来的值。
#[derive(Copy, Clone)]
struct Point {x: i32,y: i32,
}#[derive(Copy, Clone)]
struct MyStruct {a: i32,b: String, // String 不实现 Copy
}
// 编译错误:`String` 不实现 `Copy`,因此 `MyStruct` 也不能实现 `Copy`
Drop Trait
提供了一种在值离开作用域时执行代码的方式,用于自定义资源清理逻辑。
drop 方法:当值要被销毁时,Rust 会自动调用实现了 Drop Trait 的类型的 drop 方法。
相关文章:
【04】RUST特性
文章目录 隐藏shadowing所有权ownership堆区&栈区所有权规则变量&数据Copy Trait与Drop TraitCopy TraitDrop Trait移动克隆函数参数与返回值的所有权参数引用可变引用悬垂引用slice生命周期隐藏shadowing 有点像同名覆盖 let mut guess = String::new();let guess: u3…...
PlantUml常用语法
PlantUml常用语法,将从类图、流程图和序列图这三种最常用的图表类型开始。 类图 基础语法 在 PlantUML 中创建类图时,你可以定义类(Class)、接口(Interface)以及它们之间的关系,如继承&#…...
保存字典类型的文件用什么格式比较好
保存 Python 字典类型的数据时,有几个常见的格式可以选择,这些格式都具有良好的可读性和提取内容的便利性。以下是几种推荐的格式: JSON 格式: 优点:JSON 格式非常适合存储和传输结构化数据,具有良好的跨平…...
开源模型应用落地-Qwen1.5-MoE-A2.7B-Chat与vllm实现推理加速的正确姿势(一)
一、前言 在人工智能技术蓬勃发展的当下,大语言模型的性能与应用不断突破边界,为我们带来前所未有的体验。Qwen1.5-MoE-A2.7B-Chat 作为一款备受瞩目的大语言模型,以其独特的架构和强大的能力,在自然语言处理领域崭露头角。而 vllm 作为高效的推理库,为模型的部署与推理提…...
一竞技瓦拉几亚S4预选:YB 2-0击败GG
在2月11号进行的PGL瓦拉几亚S4西欧区预选赛上,留在欧洲训练的YB战队以2-0击败GG战队晋级下一轮。双方对阵第二局:对线期YB就打出了优势,中期依靠卡尔带队进攻不断扩大经济优势,最终轻松碾压拿下比赛胜利,以下是对决战报。 YB战队在天辉。阵容是潮汐、卡尔、沙王、隐刺、发条。G…...
deepseek+kimi一键生成PPT
1、deepseek生成大纲内容 访问deepseek官方网站:https://www.deepseek.com/ 将你想要编写的PPT内容输入到对话框,点击【蓝色】发送按钮,让deepseek生成内容大纲,并以markdown形式输出。 等待deepseek生成内容完毕后,…...
mybatis 是否支持延迟加载?延迟加载的原理是什么?
1. MyBatis 是否支持延迟加载? 是的,MyBatis 支持延迟加载。延迟加载的主要功能是推迟数据加载的时机,直到真正需要时再去加载。这种方式能提高性能,尤其是在处理关系型数据时,可以避免不必要的数据库查询。 具体来说…...
【Android开发】安卓手机APP拍照并使用机器学习进行OCR文字识别
前言:点击手机APP上的拍照后,调取手机设备相机拍照并获取图片显示到手机APP页面,进行提取照片内的文字,并将识别结果显示在界面上,在离线模式下也可用。文末工程链接下载 演示视频: 目录 1.新建java项目 2.添加依赖 3. MainActivity.java文件 4.activity_main.xml 文…...
力扣 15.三数之和
题目: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的…...
机器学习:二分类和多分类
1. 二分类(Binary Classification) 定义 二分类是指将输入样本分成两个互斥的类别。例如: 邮件 spam 或不是 spam。病人是有病或健康。物品是正品或假货。实现方法 二分类任务可以通过多种算法实现,包括: 逻辑回归(Logistic Regression):通过sigmoid函数将输出值映射…...
安科瑞光伏发电防逆流解决方案——守护电网安全,提升能源效率
安科瑞 华楠 18706163979 在当今大力发展清洁能源的时代背景下,光伏发电作为一种可持续的能源解决方案, 正得到越来越广泛的应用。然而,光伏发电过程中出现的逆流问题,给电网的安全稳定 运行带来了诸多挑战。若不能有效解决&…...
ml5.js框架实现AI图片识别
ml5.js ml5.js 提供了简单的接口来加载和使用机器学习模型,如图像分类、文本生成、姿态估计等,不需要深入理解底层的数学原理或复杂的编程技巧 ml5.js 构建在 TensorFlow.js 之上,提供了一系列预训练模型和简易的 API 接口 图片识别 先进行一…...
HDFS应用-后端存储cephfs-文件存储和对象存储数据双向迁移
DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝 配置/…...
关于atomic 是否是线程安全的问题
在 Objective - C 里,atomic 特性并不能保证对象是完全线程安全的,下面从其基本原理、部分线程安全场景以及局限性来详细说明: 先看一个例子 #import <Foundation/Foundation.h>interface MyClass : NSObject property (atomic, assi…...
在实体机和wsl2中安装docker、使用GPU
正常使用docker和gpu,直接命令行安装dcoker和,nvidia-container-toolkit。区别在于,后者在于安装驱动已经cuda加速时存在系统上的差异。 1、安装gpu驱动 在实体机中,安装cuda加速包,我们直接安装 driver 和 cuda 即可…...
HTTP3.0:QUIC协议详解
文章目录 HTTP3.0:QUIC协议详解QUIC是什么QUIC为什么这么快**连接建立快:一见钟情型协议****拥抱UDP:轻装上阵****多路复用:一条路走到黑****更智能的丢包处理****内置加密****网络切换无压力****拥塞控制更智能** QUIC的应用场景QUIC未来会取…...
【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA
【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA data source1: BH coordination tabledata source2:BH layer tableprocess 1:Collect BH List To Layer Tableprocess 2:match Reduced Level from "Layer"+"BH"data source1: BH coordination…...
【数据处理】使用python收集网络数据--爬虫基础
我们经常需要获取大量的网络数据用于分析,靠人工获取效率太低,所以用代码获取成为大多数人的主要选择,这里简单介绍下使用python进行网络数据爬取的方法 数据获取 由于我们没有各个平台的内部数据和接口,要想获取数据只能从网页…...
代码随想录二叉树篇(含源码)
二叉树与递归 前言226.翻转二叉树算法思路及代码solution 1 用分解问题的思路来解决solution 2 用遍历的思路来解决 101.对称二叉树算法思路及代码solution 104.二叉树的最大深度算法思路及代码solution 1 遍历solution 2 分解问题 111.二叉树的最小深度算法思路及代码solution…...
网络安全检测思路
对于主机的安全检测,我们通常直接采用nmap或者类似软件进行扫描,然后针对主机操作系统及其 开放端口判断主机的安全程度,这当然是一种方法,但这种方法往往失之粗糙,我仔细考虑了一下,觉 得按下面的流程进行…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
