Rust进阶-part5-trait

Rust进阶[part5]_trait

trait概述

在 Rust 中,trait 是一种定义共享行为的方式。它类似于其他语言中的接口,允许我们定义一组方法签名,然后让不同的类型去实现这些方法。通过 trait,我们可以实现多态性,即不同类型可以以统一的方式处理。

普通实现

  • 使用 trait 关键字来声明一个特征
  • summary 是特征名
  • 在大括号中定义了该特征的所有方法
// 定义一个 trait
trait Summary {fn summarize(&self) -> String;
}// 定义一个结构体
struct NewsArticle {headline: String,location: String,author: String,content: String,
}// 为 NewsArticle 结构体实现 Summary trait
impl Summary for NewsArticle {fn summarize(&self) -> String {format!("{}, by {} ({})", self.headline, self.author, self.location)}
}// 定义另一个结构体
struct Tweet {username: String,content: String,reply: bool,retweet: bool,
}// 为 Tweet 结构体实现 Summary trait
impl Summary for Tweet {fn summarize(&self) -> String {format!("{}: {}", self.username, self.content)}
}fn main() {let article = NewsArticle {headline: String::from("Penguins win the Stanley Cup Championship!"),location: String::from("Pittsburgh, PA, USA"),author: String::from("Iceburgh"),content: String::from("The Pittsburgh Penguins once again are the best \hockey team in the NHL."),};let tweet = Tweet {username: String::from("horse_ebooks"),content: String::from("of course, as you probably already know, people"),reply: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94528.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能-18】机器学习:决策树、随机森林

上一期【人工智能-17】机器学习:KNN算法、模型选择和调优、朴素贝叶斯分类 文章目录一、决策树1.使用理由2.技术二、随机森林1.使用理由2.原理核心:Bagging 随机特征子集3.优点和缺点一、决策树 决策树是一种监督学习算法,主要用于分类&…

RFID高频读写器在工业生产线的使用优势

在工业4.0浪潮下,智能制造对生产效率与精准度的要求日益提升。RFID技术凭借其独特的技术优势,成为工业场景中实现数据实时采集与流程优化的关键工具。本文主要从RFID高频读写器出发,系统解析其在工业生产线中的使用优势。RFID高频读写器一、技…

大模型学习笔记

prompt 提示词的构成: 指示:描述让它做什么上下文:给出与任务相关的背景信息输入: 任务的输入信息输出:输出的格式 生成与检索 生成: 优点:内容的多样性、创造性缺点:存在不可控制 检…

龙虎榜——20250806

上证指数继续收阳线,创新高的概率较大,个股上涨多于下跌,但板块轮动较明显,高位板块注意风险。深证指数较昨天放量收阳线,站上5日和10日均线继续上线,大科技方向资金关注更多。2025年8月6日龙虎榜行业方向分…

数据可视化发展历程

数据可视化是数据描述的图形表示,是当今数据分析发展最快速、最引人注目的领域之一。借助于可视化工具的发展,或朴实,或优雅,或绚烂的可视化作品给我们讲述着各种数据故事。在这个领域中,科学、技术和艺术完美地结合在…

深入理解C++中的stack、queue和priority_queue

目录 前言 1. stack(栈) 1.1 基本概念 1.2 常用接口 1.3 应用示例:最小栈 1.4 模拟实现 2. queue(队列) 2.1 基本概念 2.2 常用接口 2.3 模拟实现 3. priority_queue(优先队列) 3.1…

C++ 操作 Redis 客户端

引言 前面几篇文章都在介绍 Redis 原生命令行客户端,在实际应用开发中,开发人员更希望使用针对特定编程语言的专用客户端,通过编程的方式操作 Redis 数据库。因此,Redis 支持多种编程语言。本文将介绍 如何使用 C 语言来操作 Red…

批量提问程序开发方案:基于Python的百度文小言接口实现

批量提问程序开发方案:基于Python的百度文小言接口实现 1. 项目概述 1.1 项目背景 在现代信息检索和自动化办公场景中,批量提问功能已成为提高工作效率的重要工具。本项目旨在开发一个基于Python的批量提问程序,专门针对百度文小言平台&am…

Apollo中三种相机外参的可视化分析

Apollo中三种相机外参的可视化分析一、什么是相机外参?为什么需要可视化?二、不同外参来源对比三、详细操作步骤1. 环境准备2. 获取 NuScenes外参数据3. 外参到空间位置的转换及可视化四、可视化对比1. NuScenes数据集外参2. Apollo BEV模型外参3. Apoll…

虚拟化KVM常用命令汇总

KVM(Kernel-based Virtual Machine)是一种开源的硬件虚拟化解决方案,它是 Linux 内核的一部分,允许在支持虚拟化技术的硬件(如 Intel VT-x 或 AMD-V)上运行虚拟机。KVM 将 Linux 内核转变为一个裸机虚拟机监…

6s081环境配置以及使用vscode连接本地wsl2

6s081环境配置以及使用vscode连接wsl2 本人环境:windows11、wsl2ubuntu20.04 课程:6s081的2020版本的:https://pdos.csail.mit.edu/6.S081/2020/schedule.html 一、wsl2ubuntu20.04配置6s081环境 注:关于如何在window中安装wsl,这…

C++实现线程池(3)缓存线程池

三. CachedThreadPool 的实现3.1 需求:动态调整线程数量:与 FixedThreadPool 不同,CachedThreadPool 的线程数量是动态调整的。当有新任务提交时,如果线程池中有空闲的线程,则会立即使用空闲线程执行任务;如果线程池中…

WMS+自动化立库:无人仓的现在进行时

传统仓库正面临严峻挑战:效率瓶颈日益凸显,人力成本持续攀升,空间利用率逼近极限,而订单响应速度却难以满足市场需求。如何破局?WMS(仓库管理系统)与自动化立体库(AS/RS)…

多模态大模型研究每日简报【2025-08-05】

训练数据相关 EditGarment: An Instruction-Based Garment Editing Dataset Constructed with Automated MLLM Synthesis and Semantic-Aware Evaluation (https://arxiv.org/abs/2508.03497):提出了一种自动化的流程,用于构建服装编辑数据集EditGarmen…

4、docker数据卷管理命令 | docker volume

1、命令总览命令作用出现频率备注★ docker volume create新建卷高-d 指定驱动,-o 指定驱动选项★ docker volume ls列出卷高--filter danglingtrue 查孤儿卷★ docker volume inspect查看卷详情高输出 JSON,可加 --format★ docker volume rm删除卷高只…

计数组合学7.14(对偶 RSK 算法)

7.14 对偶 RSK 算法 存在 RSK 算法的一种变体,其与乘积 ∏i,j(1xiyj)\prod_{i,j}(1 x_{i}y_{j})∏i,j​(1xi​yj​) 的关系类似于 RSK 算法本身与 ∏i,j(1−xiyj)−1\prod_{i,j}(1 - x_{i}y_{j})^{-1}∏i,j​(1−xi​yj​)−1 的关系。我们称此变体为对偶 RSK 算法…

C语言中的进程、线程与进程间通信详解

目录 引言 基本概念 1. 进程(Process) 2. 线程(Thread) 线程编程实战 1. 常见线程库 2. 合理设置线程数 3. pthread 创建线程 线程同步机制 1. 互斥锁 pthread_mutex_t 2. 条件变量 pthread_cond_t 3. 读写锁 pthread…

[假面骑士] 555浅谈

假面骑士555(faiz)是我最先接触的一部平成系列的假面骑士,同时也是我个人最喜欢的一部假面骑士。一、大纲简介震惊,人类最新的进化形态——奥菲一诺,横空出世!日本的顶级财团,Smart Brain,的前任社长&#…

Vue Router 路由的创建和基本使用(超详细)

一、路由的基本概念 你是否好奇单页应用(SPA)是如何在不刷新页面的情况下实现页面切换的?这就离不开路由的功劳。 路由:本质是一组 key-value 的对应关系,在前端领域中,key 通常是路径,value …

深入理解设计模式:策略模式的艺术与实践

在软件开发中,我们经常会遇到需要根据不同情况选择不同算法或行为的场景。传统的做法可能是使用大量的条件语句(if-else或switch-case),但随着需求的增加和变化,这种硬编码的方式会导致代码难以维护和扩展。策略模式&a…