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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值