华山论剑之Rust的Trait

华山论剑,群雄荟萃,各显神通。武林中人,各有所长,或剑法飘逸,或掌法刚猛,或轻功绝顶。这就好比Rust中的trait,它定义了一种武功套路,而不同的门派、不同的人,可以将这套武功练出不同的境界。
trait,便是这武林中的武功秘籍。 它规定了这一套武功的基本招式、套路,但具体如何施展,则因人而异。
比如,少林寺的《易筋经》,便是一门极高的内功心法。它规定了如何运行内力,如何锤炼筋骨。这《易筋经》,就好比一个trait。
trait YiJinJing {fn run_neili(&self) -> String;
}
然后,少林寺的各个弟子,都可以修炼这《易筋经》,但练出的效果却不同。
struct Abbot {name: String,
}impl YiJinJing for Abbot {fn run_neili(&self) -> String {format!("{}方丈运起《易筋经》,内力如海", self.name)}
}struct Disciple {name: String,
}impl YiJinJing for Disciple {fn run_neili(&self) -> String {format!("{}小和尚正在修炼《易筋经》", self.name)}
}
这样一来,不管是方丈还是小和尚,只要修炼了《易筋经》,都能运起内力。这就好比少林寺的弟子,虽然修为不同,但都掌握了《易筋经》的基本功法。
再比如,武当派的太极剑法,讲究以柔克刚,四两拨千斤。我们可以定义一个 TaiChiSword trait。
trait TaiChiSword {fn sword_dance(&self, opponent: &dyn TaiChiSword) -> String;
}
这样一来,不同的武当弟子,就可以相互切磋,各自施展太极剑法的精妙之处。
总结起来,Rust的trait就像武林秘籍,它定义了一套行为规范。不同的结构体可以实现同一个trait,就像不同的人可以修炼同一种武功。通过trait,我们可以让我们的代码更加灵活、可复用。
这Rust语言,真是深不可测。 它将编程的概念用武林的比喻来诠释,真是让人热血沸腾。
你瞧,这Rust语言,是不是很有趣?
进一步解读
- trait就像武功秘籍: 它规定了武功的基本招式和套路。
- 实现trait就像修炼武功: 不同的人修炼同一种武功,但修炼的境界不同。
- trait的好处:
- 代码复用: 多个人可以修炼同一种武功。
- 多态: 可以将不同的人看作是修炼同一种武功的人。
- 代码组织: 提高了武林的管理效率。
这个例子将抽象的编程概念与具体的、武侠世界相结合,使 Rust 的 trait 变得更加生动形象,更容易理解。
更深入的思考:
- trait和武功心法区别: trait强调的是行为,而武功心法强调的是内功。
- trait的应用场景: trait可以用于定义各种各样的武功,比如轻功、内功、剑法等等。
通过这个例子,我们可以更好地理解 Rust trait 的核心思想,以及它在实际编程中的应用。
相关文章:
华山论剑之Rust的Trait
华山论剑,群雄荟萃,各显神通。武林中人,各有所长,或剑法飘逸,或掌法刚猛,或轻功绝顶。这就好比Rust中的trait,它定义了一种武功套路,而不同的门派、不同的人,可以将这套武…...
AI 编译器学习笔记之七五 -- pdb 使用方法
1、进入调试状态有2种方法:Python工具PDB调试器的使用方法详解_python_脚本之家 (jb51.net) a) 在重新种设置断点正常执行:遇到代码中插入的pdb.set_trace()或者breakpoint()进入调试状态 b) 不修改命令行:直接使用 python3 -m pdb pdb_demo.…...
15分钟学Go 第8天:控制结构 - 循环
第8天:控制结构 - 循环 在Go语言中,循环是一种基本的控制结构,用于重复执行一段代码。今天我们将深入了解Go语言中的for循环,包括它的各种用法、语法结构、以及如何在实践中有效地应用循环。 1. for 循环的基本概念 for循环是G…...
后端接收参数的几种常用注解
目录 一、RequestParam 二、RequestBody 三、PathVariable 四、RequestHeader 五、RequestAttribute 六、RequestPart 七、Valid 一、RequestParam 1.作用 用于将请求中的 查询参数 或 表单参数 绑定到方法的参数上。支持 GET 和 POST 请求。 2.使用方法 GetMappin…...
如何使用docker在linux中配置C++环境
目录 1. 安装docker 2. 配置C环境 1)启动ubuntu:22.04容器 2)配置编译环境G 3)安装软件 4)测试 1. 如何打包容器生成tar? a. 生成容器镜像 b. 将镜像压缩成tar 2. 如何将容器内部的端口映射至宿主机…...
darknet_ros 使用教程
首先是git clone可能会因为到没有权限的问题(SSH),此时输入 git clone --recursive https://github.com/leggedrobotics/darknet_ros.git 下载成功之后 catkin_make -DCMAKE_BUILD_TYPERelease catkin失败原因(在CMakefile中&…...
第九课 Vue中的v-bind指令拓展
Vue中的v-bind指令 示例拓展 1)切换样式 <style>.test{width: 100px;height: 100px;border: 3px solid #000;}.bg{background: red;}</style><div id"app"><input type"button" value"点击切换样式" click&qu…...
DOIP协议介绍2-Diagnostic power mode information request (0x4003)消息
DOIP(Diagnostic communication over Internet Protocol)是基于以太网的通讯协议,用于对UDS协议的数据进行传输,规范于ISO13400标准。DOIP的Type:Diagnostic power mode information request(0x4003&#x…...
Eclipse 软件:配置 JDBC、连接 MySQL 数据库、导入 jar 包
目录 一、配置 JDBC (一)作用 (二)官网下载 1. 下载链接 2. 下载 3. 补充:压缩包分类与用途 (三)eclipse 导入 JDBC 的 jar 包 (四)加载数据库驱动 (五…...
二叉树中的最长交错路径
题目链接 二叉树中的最长交错路径 题目描述 注意点 每棵树最多有 50000 个节点每个节点的值在 [1, 100] 之间起点无需是根节点 解答思路 要找到最长交错路径,首先想到的是深度优先遍历因为起点无需是根节点,所以对于任意一个节点,其可以…...
高校企业数据可视化平台功能介绍/特色功能
数据可视化平台是一款适用于高校教学和各领域企业的零门槛可视化工具,能够解决高校数据分析与可视化类课程教学、实训问题。平台采用B/S结构,用户不需要下载客户端,可通过浏览器进行访问。 数据可视化平台提供多种指标设计,学…...
RHCE第三次笔记SSH
第三章 远程连接服务器 1、远程连接服务器简介 (1)什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录 linux 主机以取得可操作主机接口(shell ),而登录后…...
JAVA基础-包装类
文章目录 包装类1 概述2 Integer类2.1 Integer类构造方法2.2 Integer类成员方法 3 基本类型与字符串之间的转换3.1 基本类型转换为String3.2 String转换成基本类型 4 底层原理 第六章:算法小题练习一:练习二:练习三:练习四&#x…...
复合逻辑运算与复合逻辑门
或非门(NOR gate) 是一种基本的逻辑门,它结合了“或”(OR)和“非”(NOT)操作。或非门的输出是输入信号的否定,只有在所有输入都为零时,输出才为一。 与非运算࿰…...
工厂模式~
现实世界中的例子 考虑一个招聘经理的情况。一个人不可能为每一个职位都进行面试。根据职位空缺,她必须决定并将面试步骤委托给不同的人。 用简单的话来说 它提供了一种将实例化逻辑委托给子类的方法。 维基百科的解释 在基于类的编程中,工厂方法模式是…...
Elasticsearch基本使用及介绍
Elasticsearch 1. 关于各种数据库的使用 关于MySQL:是关系型数据库,能清楚的表示数据之间的关系,并且,是基于磁盘存储的,可以使用相对较低的成本存储大量的数据 关于Redis:是基于K-V结构的在内存中读写数…...
10. PH47代码框架文件组织
通过之前章节对PH47体系的介绍,读者对PH47能建立起了初步的概念及掌握各主要构成部分的使用开发方法。从本章节开始,就将对PH47代码的二次开发内容进行具体讲述。 本部分就将对PH47框架当中代码文件的组织方式及功能作用进行介绍,对于将来熟…...
LabVIEW提高开发效率技巧----VI继承与重载
在LabVIEW开发中,继承和重载是面向对象编程(OOP)中的重要概念。通过合理运用继承与重载,不仅能提高代码的复用性和灵活性,还能减少开发时间和维护成本。下面从多个角度介绍如何在LabVIEW中使用继承和重载,并…...
4.8 大数据发展趋势
文章目录 今天,我想与大家探讨一个充满潜力和变革的主题——大数据的发展趋势。大数据不仅正在改变我们的工作和生活方式,更是推动社会进步和经济发展的关键因素。 首先,让我们看看国内的大数据发展趋势。中国政府高度重视大数据产业&#x…...
【无标题】react组件封装
子组件制作 import { useState,useRef, useEffect} from "react"const Table (data)> {const {value ,option} dataconsole.log(value)const [stata,setValue] useState()const useRefs useRef(value)useEffect(()> {useRefs.current.value value })c…...
seo网上教程有哪些常见错误
SEO网上教程有哪些常见错误 在互联网时代,SEO(搜索引擎优化)已经成为网站流量和排名提升的关键因素。很多人在学习SEO过程中,常常会遇到一些误区,甚至在网上找到的一些教程中也包含了不少错误。本文将详细介绍一些常见…...
OpenClaw备份方案:Qwen3-4B-Thinking自动化数据归档系统
OpenClaw备份方案:Qwen3-4B-Thinking自动化数据归档系统 1. 为什么需要自动化备份系统 作为一个长期与代码和数据打交道的开发者,我经历过太多次"数据灾难"——硬盘突然损坏导致项目丢失,误删重要文件后无法恢复,甚至…...
卓岚5143D网关+Modbus Slave调试全流程:从硬件连接到MQTT数据订阅
卓岚5143D网关与Modbus Slave协同调试实战指南 在工业物联网项目中,Modbus协议因其简单可靠的特点,至今仍是设备通信的主流选择。而将传统串口设备接入现代MQTT物联网平台时,网关设备的选择与配置往往成为关键难点。本文将基于卓岚5143D网关&…...
从晶体管到ALU:计算机运算基础全解析
1. 从晶体管到二进制:计算机运算的物理基础现代计算机的核心运算能力源于晶体管这一基础电子元件的巧妙运用。晶体管本质上是一个由半导体材料制成的三端器件,通过控制其中一个电极(基极或栅极)的电压,可以精确控制另外…...
SpringCloud快速入门--GateWay路由网关与Config配置中心
背景 StreamJsonRpc 是微软官方维护的用于 .NET 和 TypeScript 的 JSON-RPC 通信库,以其强大的类型安全、自动代理生成和成熟的异常处理机制著称。在 HagiCode 项目中,为了通过 ACP (Agent Communication Protocol) 与外部 AI 工具(如 iflow …...
白嫖DeepSeek、GLM、MiniMax、Kimi等大模型,每天 1亿 Token 免费领!
每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型! 最近折腾 AI 编程的朋友估计挺多的。这玩意儿现在进化得确实有点吓人。就拿名气最大的 Claude Code 来说,它这个命令行工具直接把写代码变成了“在线聊天”。你只要嘴上说清…...
百度飞桨PaddleOCR图片印章检测技术简介
百度飞桨PaddleOCR图片印章检测技术简介 全文链接 百度飞桨PaddleOCR图片印章检测技术简介 github仓库:使用PaddleOCR识别图片红色印章文字 red-seal-ocr 3.X和2.X区别较大,建议使用3.X版本。 PaddleX简介 PaddleX github地址PaddleX模型产线使用概览…...
I2C设备扫描器:嵌入式系统总线拓扑发现与地址诊断工具
1. I2C设备扫描器:嵌入式系统中总线拓扑发现的核心工具IC(Inter-Integrated Circuit)总线因其仅需两根信号线(SCL时钟线与SDA数据线)、支持多主多从架构、内置仲裁与应答机制等特性,成为嵌入式系统中传感器…...
OpenClaw任务编排:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF处理依赖型工作流
OpenClaw任务编排:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF处理依赖型工作流 1. 为什么需要任务编排 去年夏天,我接手了一个数据分析项目,需要定期从十几个网站抓取数据,清洗后生成分析报告,再邮件发送给团…...
2009 Text 1
2009 Text 1...
