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

rust笔记13:trait对象

在 Rust 中,trait 对象 是一种实现动态分发(dynamic dispatch)的机制,允许你在运行时处理实现了某个 trait 的不同类型。Trait 对象是 Rust 中实现多态性的重要工具之一,特别是在需要处理多种类型但又不确定具体类型的情况下。
在有继承的语言中,可以通过类继承实现多态,rust没有继承,trait对象便是为了完成类似特性。


1. 什么是 Trait 对象?

Trait 对象是一个指向实现了某个 trait 的类型的指针,它由两部分组成:

  1. 数据指针:指向具体类型的实例。
  2. 虚表指针(vtable):指向 trait 方法的函数指针表。

Trait 对象的类型通常表示为 dyn Trait,例如 &dyn TraitBox<dyn Trait>

示例:Trait 对象

trait Speak {
   
    fn speak(&self);
}

struct Dog;
struct Cat;

impl Speak for Dog {
   
    fn speak(&self) {
   
        println!("Woof!");
    }
}

impl Speak for Cat {
   
    fn speak(&self) {
   
        println!("Meow!");
    }
}

fn main() {
   
    let dog

相关文章:

  • 电脑技巧:硬件检测工具 HWiNFO 8.16版本更新功能介绍
  • 点云滤波方法:特点、作用及使用场景
  • MyBatis-Plus 条件构造器的使用(左匹配查询)
  • 使用jacob进行word操作
  • docker:Dockerfile案例之自定义centos7镜像
  • ESP8266连接网络实时上传数据
  • 基于Qwen-VL的手机智能体开发
  • 达梦适配记录-检查服务器
  • Linux网络相关内容与端口
  • 【人工智能】异构算力重构AIGC | 蓝耘智算平台部署通义万相2.1文生图技术全解析
  • RocketMQ顺序消费机制
  • 智慧水务新时代:1.05亿项目引领的数字化浪潮
  • 从“0”开始入门PCB之(5)完结篇!--快速入门原理图DRC,PCB的符号与布局,2D与3D效果,PCB的图层和布线,PCB板框
  • 备赛蓝桥杯之第十五届职业院校组省赛第六题:简易JSX解析器
  • 深入探索WebGL:解锁网页3D图形的无限可能
  • AI控制游戏 -- 开源框架来了!
  • 电力MOSFET的输出特性与转移特性
  • 【基于手势识别的音量控制系统】
  • Kali GRUB 修复
  • 19c rac-expdp备份异常处理
  • 如何用dede做带下单的网站/响应式网站 乐云seo品牌
  • 网站建设设计简介/618网络营销策划方案
  • 浅灰色做网站背景/沈阳百度推广排名优化
  • 做美股的数据网站/网站设计公司模板
  • 企业网站东莞网站建设制作/网站底部友情链接
  • 网站建设深圳公司/公司地址怎么弄在百度上显示