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;
}

相关内容

热门资讯

目前来看"xpoke... 目前来看"xpoker辅助工具"扑克之星辅助(真是真的是有辅助安装)-哔哩哔哩小薇(辅助器软件下载)...
透视解迷"werpl... 透视解迷"werplan免费挂下载"其实存在有辅助软件(哔哩哔哩)亲,关键说明,werplan免费挂...
连日来"pokemo... 连日来"pokemomo辅助工具"约局吧德州可以透视吗(一贯是真的辅助软件)-哔哩哔哩1、打开软件启...
透视普及"hhpok... 透视普及"hhpoker是真的假的"本来真的有辅助攻略(哔哩哔哩)1、在hhpoker是真的假的插件...
反观"poker辅助... 反观"poker辅助器免费安装"约局吧辅助器(一贯是有辅助工具)-哔哩哔哩1、这是跨平台的poker...
透视开挂"hhpok... 透视开挂"hhpoker外开挂靠谱吗"切实有辅助教程(哔哩哔哩)1、在hhpoker外开挂靠谱吗插件...
辅助透视"wepok... 辅助透视"wepoker有用吗"wepokerplus到底是挂了吗(本来真的有辅助下载)-哔哩哔哩1...
透视有挂"wepok... 透视有挂"wepoker破解器"一贯存在有辅助脚本(哔哩哔哩)1、超多福利:超高返利,海量正版游戏,...
据文件显示"wepo... 据文件显示"wepoker有用吗"wepoker正确养号方法(竟然有辅助辅助器)-哔哩哔哩1、让任何...
透视专业"wepok... 透视专业"wepokerplus脚本"原来是真的辅助方法(哔哩哔哩)一、wepokerplus脚本游...