Rust系列(四) trait备忘录(持续更新)
上一篇:Rust系列(三) 类型系统与trait
基于官方文档进行简单学习记录,保证所有示例是可运行的基本单元。测试
rust程序除了使用官方的playground之外,还可以通过定义[[example]]来运行程序。
文章目录
- 1. Deref
- 2. DerefMut
1. Deref
用于不可变对象的解引用操作,语法类似*v。
官方文档:https://doc.rust-lang.org/std/ops/trait.Deref.html
trait源码
pub trait Deref {type Target: ?Sized;// Required methodfn deref(&self) -> &Self::Target;
}
备注:Deref 和 DerefMut 设计之初就是为了适配和简化智能指针而设计的,应该避免为非智能指针实现相关trait,以造成混淆。
Deref coercion
假设类型T实现了Deref<Target = U> trait,有一个类型为T的变量x,有下面几条规则成立:
*x等价于*Deref::deref(&x)- 类型
T必须实现所有类型U的不可变方法
应用示例
use std::ops::Deref;struct DerefExample<T> {value: T,
}impl<T> Deref for DerefExample<T> {type Target = T;fn deref(&self) -> &Self::Target {&self.value}
}fn main() {let x: DerefExample::<char> = DerefExample { value: 'a' };let target: char = *x;// a aprintln!("{} {}", target, 'a');
}
2. DerefMut
用于可变对象的解引用操作,语法类似*v = 1。
官方文档:https://doc.rust-lang.org/std/ops/trait.DerefMut.html
trait源码
pub trait DerefMut: Deref {// Required methodfn deref_mut(&mut self) -> &mut Self::Target;
}
DerefMut coercion
假设类型T实现了DerefMut<Target = U> trait,有一个类型为T的变量x,有下面几条规则成立:
*x等价于*DerefMut::deref_mut(&mut x)- 类型
T必须实现所有类型U的可变和不可变方法
应用示例
use std::ops::{Deref, DerefMut};struct DerefMutExample<T> {value: T,
}impl<T> Deref for DerefMutExample<T> {type Target = T;fn deref(&self) -> &Self::Target {&self.value}
}impl<T> DerefMut for DerefMutExample<T> {fn deref_mut(&mut self) -> &mut Self::Target {&mut self.value}
}fn main() {let mut x: DerefMutExample::<char> = DerefMutExample { value: 'a' };// a aprintln!("{} {}", *x, 'a');*x = 'b';// b aprintln!("{} {}", *x, 'a');
}
相关文章:
Rust系列(四) trait备忘录(持续更新)
上一篇:Rust系列(三) 类型系统与trait 基于官方文档进行简单学习记录,保证所有示例是可运行的基本单元。测试rust程序除了使用官方的playground之外,还可以通过定义[[example]]来运行程序。 文章目录 1. Deref2. DerefMut 1. Deref 用于不可…...
贪心算法总结及其leetcode题目N道
1 我为什么要写这个总结 1.1 字节笔试题 小明在玩一场通关游戏,初始血量为1,关卡有怪兽或者有血包(正数就是血包可回血数,负数说明是怪兽的伤害值),当捡到血包时会加血量,碰到怪兽时会掉血&am…...
k8s的namespace一直处于terminating的解法
先试了强制替换,无法替换掉,强制删除,也删除不掉namespace [rootmaster k8s-study]# vi ns-demo.yaml [rootmaster k8s-study]# kubectl create -f ns-demo.yaml namespace/demo created [rootmaster k8s-study]# kubectl get -f ns-demo.ya…...
JAVA面试总结-Redis篇章(六)——数据过期策略
Java面试总结-Redis篇章(六)——数据过期策略 Redis数据删除策略——惰性删除Redis数据删除策略——定期删除 Redis数据删除策略——惰性删除 Redis数据删除策略——定期删除...
【LLM】大语言模型学习之LLAMA 2:Open Foundation and Fine-Tuned Chat Model
大语言模型学习之LLAMA 2:Open Foundation and Fine-Tuned Chat Model 快速了解预训练预训练模型评估微调有监督微调(SFT)人类反馈的强化学习(RLHF)RLHF结果局限性安全性预训练的安全性安全微调上手就干使用登记代码下载获取模型转换模型搭建Text-Generation-WebUI分发模型…...
Android是如何识别USB信号的
Android设备通过USB接口与外部设备通信时,会通过USB控制器(USB Controller)与USB设备进行通信。USB控制器是Android设备的一个硬件组件,它负责管理USB总线并控制所有USB设备的连接和通信。 当一个USB设备被插入Android设备的USB接…...
机器学习前言
1.机器学习和统计学关系 2.机器学习的发展 3.机器学习与深度学习的相同点与不同点 4.机器学习和深度学习优缺点 一、机器学习和统计学关系 机器学习和统计学密切相关,可以说机器学习是统计学在计算机科学和人工智能领域的应用。机器学习和统计学在方法论和技术上有…...
Java另一种debug方法(not remote jmv debug),类似python远程debug方式
这种Debug类似python的debug方式,是运行时将业务代码及依赖推送到Linux并使用Linux的java运行运行程。只要本地能运行,就能自动将代码推送到Linux运行,不需打包及设置远程debug jvm参数,适合一些项目Debug调试 运行时会推送一些依…...
【QT】Day4
1> 思维导图 2> 手动完成服务器的实现,并具体程序要注释清楚 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器类 #include <QTcpSocket> //客户端类 #include <QMessageBox> //…...
在CSDN学Golang云原生(Kubernetes Pod 有状态部署)
一,StatefulSet部署MongoDB集群 Kubernetes StatefulSet 是 Kubernetes 中的一种资源类型,它能够保证有状态服务(Stateful Service)的唯一性和顺序部署,适用于需要持久化存储、网络标识、状态管理等场景。MongoDB 是一…...
sql-从一个或多个表中向一个表中插入 多行
INSERT还可以将SELECT语句查询的结果插入到表中,此时不需要把每一条记录的值一个一个输入,只需 要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入 多行。 基本语法格式如下: INSERT INTO 目标表…...
ElementUI 实现动态表单数据校验(已解决)
文章目录 🍋前言:🍍正文1、探讨需求2、查阅相关文档([element官网](https://element.eleme.cn/#/zh-CN/component/form))官方动态增减表单项示例3、需求完美解决4、注意事项 🎃专栏分享: &#…...
Linux上定位线上CPU飙高
【模拟场景】 写一个java main函数,死循环打印 System.out.println(“111111”) , 将其打成jar包放在linux中执行 1、通过TOP命令找到CPU耗用最厉害的那个进程的PID 2、top -H -p 进程PID 找到进程下的所有线程 可以看到 pid 为 94384的线程耗用cpu …...
06-行向量列向量_向量的运算 加法,数乘,减法,转置
行向量和列向量 行向量是按行把向量排开(横着来写), 列向量是按列把向量排开(竖着来写) 在数学中我们更多的把数据写成列向量,在编程语言中更多的把数据存成行向量! 如果想在编程语言中把行向量转化成列…...
基于Matlab实现最大类间方差阈值与遗传算法的道路分割(附上完整源码+图像+程序运行说明)
道路分割是计算机视觉和图像处理中的一个重要任务,它在交通监控、自动驾驶和地图制作等领域具有广泛的应用。其中,最大类间方差阈值和遗传算法是道路分割中常用的方法之一。本文将介绍如何使用Matlab实现最大类间方差阈值与遗传算法进行道路分割。 文章目…...
13.4.2 【Linux】sudo
相对于 su 需要了解新切换的使用者密码 (常常是需要 root 的密码), sudo 的执行则仅需要自己的密码即可。sudo 可以让你以其他用户的身份执行指令 (通常是使用 root 的身份来执行指令),因此并非所有人都能够…...
电脑软件:键盘按键修改器——keytweak使用介绍
对你的电脑键盘的布局不满意、键盘上的某个按键坏掉了等等键盘问题如何解决?有了KeyTweak这一切就可以轻松解决了,KeyTweak是一个免费软件程序,使用它可让你重新映射键盘键。如果您改变主意并想将其改回原样,只需点击一下即可容易…...
软件工程学术顶会——ICSE 2023 议题(网络安全方向)清单与摘要
按语:IEEE/ACM ICSE全称International Conference on Software Engineering,是软件工程领域公认的旗舰学术会议,中国计算机学会推荐的A类国际学术会议,Core Conference Ranking A*类会议,H5指数74,Impact s…...
【Python】jupyter Linux服务器使用
文章目录 环境使用访问 环境 pip install jupyter 使用 在你想访问的目录下执行: jupyter notebook --ip0.0.0.0jupyter 给出提示: [I 2023-07-28 14:32:43.589 ServerApp] Package notebook took 0.0000s to import [I 2023-07-28 14:32:43.597 Ser…...
element 级联 父传子
html代码例子 父组件 <el-cascaderstyle"width: 100%"change"unitIdChange":options"unitOptions"filterablev-model"formInline.unitId":props"unitProps"/></el-form-item>//改变级联传值到这个组件里面<r…...
2026最权威的五大AI辅助写作神器解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 随着人工智能技术发展得格外迅猛,学术领域对于AI相关论文的需求增长得越来越快。…...
Python爬虫实战:用Requests+Pandas批量抓取东方财富网全板块股票数据(附完整源码)
Python爬虫实战:构建东方财富网股票数据自动化采集系统 在金融数据分析领域,获取全面、准确的股票市场数据是量化交易、投资研究和市场监控的基础。对于Python开发者而言,如何高效地从东方财富网这类金融门户批量获取全板块股票数据ÿ…...
避坑指南:STM32与串口屏通信中的3大常见错误及解决方法
STM32与串口屏通信实战:3个工程师踩过的坑与解决方案 第一次在项目中使用串口屏时,我盯着屏幕上闪烁的乱码整整两天——波特率设置明明和手册一致,为什么数据就是不对?相信很多工程师都遇到过类似的困扰。串口通信看似简单&#x…...
DMA固件读卡器源码:pcileech-带读卡器仿真的FPGA
DMA固件读卡器源码,只提供源码 pcileech-带读卡器仿真的fpga最近在折腾硬件安全研究的小伙伴们应该都听说过DMA(直接内存访问)读卡器的骚操作。这玩意儿不经过CPU直接跟内存对话的特性,在取证和漏洞挖掘领域简直是个神器。今天咱们…...
收藏!小白程序员必看:轻松入门大模型核心概念MCP与Skill,解锁AI能力新姿势!
本文通过生活化比喻,深入浅出地解释了AI领域中的MCP和Skill两大核心概念。MCP如同AI世界的“USB接口”,是标准化的连接协议,让AI能调用外部工具;Skill则像“工作手册”,是工作规范/技能模板,告诉AI在不同场…...
Graphormer效果可视化:预测结果置信度热力图与分子原子重要性归因展示
Graphormer效果可视化:预测结果置信度热力图与分子原子重要性归因展示 1. 模型概述 Graphormer是一种基于纯Transformer架构的图神经网络,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。该模型在OGB、PCQM4M等分子…...
SIM4LIFE Light保姆级教程:手把手搞定第一个人体SAR值仿真(附FDTD模块避坑指南)
SIM4LIFE Light保姆级教程:手把手搞定第一个人体SAR值仿真(附FDTD模块避坑指南) 电磁场仿真在生物医学工程领域扮演着越来越重要的角色,而SIM4LIFE Light作为一款专为人体组织电磁特性研究设计的仿真软件,凭借其内置的…...
React19 + Tailwindcss V4 实战:手把手教你打造一个高颜值标签输入与随机选择器
React19 Tailwindcss V4 实战:构建智能标签输入与随机决策工具 在今天的快节奏生活中,我们每天都要做出无数选择——从午餐吃什么到周末去哪玩,甚至团队建设时随机点名。作为开发者,我们可以用技术让这些决策过程变得有趣而高效。…...
MAP vs MLE:机器学习参数估计该怎么选?5个真实案例告诉你答案
MAP vs MLE:机器学习参数估计该怎么选?5个真实案例告诉你答案 在机器学习项目的参数估计环节,数据科学家常常面临一个关键选择:采用最大后验概率(MAP)还是最大似然估计(MLE)…...
实战演练:三种常见办公文档加密破解技巧(ZIP密码/ZIP伪加密/DOC密码)
1. ZIP密码破解实战:从入门到精通 工作中经常会遇到这种情况:同事发来的压缩包设置了密码,但对方忘记告诉你密码是什么;或者多年前自己加密的压缩包,现在怎么也打不开了。这时候就需要掌握一些ZIP密码破解的技巧。 我遇…...
