async_trait能否与动态分派一起使用?
创始人
2024-09-21 10:30:45
0

可以使用async_trait的时候,方法参数类型是静态的,因此与动态分派可能会有一些限制。但是你可以使用Box来传递实现了SomeTrait的类型。这使得动态派发更容易,而async_trait仍然可以处理异步性。

下面是代码示例:

use async_trait::async_trait;

trait SomeTrait {
    async fn do_something(&self);
}

struct A;

#[async_trait]
impl SomeTrait for A {
    async fn do_something(&self) {
        println!("A is doing something");
    }
}

struct B;

#[async_trait]
impl SomeTrait for B {
    async fn do_something(&self) {
        println!("B is doing something");
    }
}

#[async_trait]
trait SomeOtherTrait {
    async fn call_do_something(&self, thing: &dyn SomeTrait);
}

struct C;

#[async_trait]
impl SomeOtherTrait for C {
    async fn call_do_something(&self, thing: &dyn SomeTrait) {
        thing.do_something().await;
    }
}

#[tokio::main]
async fn main() {
    let a = A {};
    let b = B {};

    let c = C {};

    c.call_do_something(&a).await;
    c.call_do_something(&b).await;
}

相关内容

热门资讯

如何分辨真伪!随意玩有辅助吗,... 如何分辨真伪!随意玩有辅助吗,宝宝游戏辅助器,详细技巧(今日头条)1、进入到随意玩有辅助吗是否有挂之...
必看攻略!悟空大厅微信辅助,泉... 必看攻略!悟空大厅微信辅助,泉州相约十三水辅助,详细挂(有挂方式)1、全新机制【泉州相约十三水辅助a...
必备教程!微信小程序中至赣牌圈... 必备教程!微信小程序中至赣牌圈辅助,蘑菇辅助脚本,详细挂(有挂攻略);1、玩家可以在微信小程序中至赣...
今日重大通报!欢乐联盟卡五星辅... 今日重大通报!欢乐联盟卡五星辅助,广西微乐小程序脚本,详细脚本(有挂实锤)1、实时欢乐联盟卡五星辅助...
重大科普!来几局辅助器开挂,链... 重大科普!来几局辅助器开挂,链接大厅辅助插件有哪些,详细神器(果真有挂)1、金币登录送、破产送、升级...
实测教程!大玩家福建十三水辅助... 实测教程!大玩家福建十三水辅助,决战卡五星辅助修改器,详细教程(有挂秘笈)1、点击下载安装,决战卡五...
记者爆料!乐平包王讨赏辅助,上... 记者爆料!乐平包王讨赏辅助,上饶中至能操控吗,详细脚本(发现有挂)1、记者爆料!乐平包王讨赏辅助,上...
玩家必备教程!四川微乐自建房辅... 玩家必备教程!四川微乐自建房辅助器,桂麻圈辅助,详细教程(有挂方法)1、这是跨平台的四川微乐自建房辅...
来一盘!家家盘锦开挂,潮友辅助... 来一盘!家家盘锦开挂,潮友辅助插件,详细器(有挂详情)1、打开软件启动之后找到中间准星的标志长按。2...
玩家必看教程!天天开心王国辅助... 玩家必看教程!天天开心王国辅助器,蘑菇云辅助怎么使用,详细软件(有挂分析)进入游戏-大厅左侧-新手福...