不能使用带有未推断的泛型参数的trait的关联类型?
创始人
2024-12-27 06:00:32
0次

产生这个问题的原因是在使用 trait 声明关联类型时,它的参数是未知的。在函数调用中推断泛型参数可以解决这个问题。

以下是一个示例代码,其中的 Associated trait 声明了一个关联类型 Output:

trait Associated {
    type Output;
    fn associated(&self, t: T) -> Self::Output;
}

fn foo>(a: A, t: T) -> A::Output {
    a.associated(t)
}

struct MyType(u32);

impl Associated for MyType {
    type Output = (T, u32);
    fn associated(&self, t: T) -> Self::Output {
        (t, self.0)
    }
}

fn main() {
    let mytype = MyType(42);
    let result = foo(mytype, "hello");
    println!("result = {:?}", result);
}

在这里,foo 函数是泛型的,并返回一个 A::Output 类型的值,其中 A 必须是实现了 Associated trait 的类型。

MyType 结构体实现了 Associated,其中 Output 被定义为一个元组 (T, u32),函数 associated 将构造和返回该元组。

在 main 函数中,使用 MyType 的实例调用 foo,并传递 "hello" 的字符串字面量作为第二个参数。由于 foo 函数中的 T 是从参数推断获得的,因此没有未推断的泛型参数,所以不会出现编译错误。

相关内容

热门资讯

一分钟揭秘辅助挂!wepoke... 您好,一分钟揭秘辅助挂!wepoker辅助透视软件,微扑克可以开挂吗神器(其实有辅助挂)这款游戏可以...
玩家必看科普!透视!wpk透视... 『标题:当前标题』主打赛后复盘的 AI 游戏攻略黑科技走红,对局总结能力开挂。上传对局回放或者战绩截...
研究成果开挂!wpk系统是否存... 很多人使用云端 AI 时,都担心wpk系统是否存在作弊行为、内部资料上传带来隐私风险。这款本地运行的...
重大通报!辅助!wepoker... 重大通报!辅助!wepoker私局代打,wepoker真的有挂教程(一直是有辅助)AI 是一款可以让...
玩家攻略推荐辅助!wepoke... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...
一分钟了解透视!德普之星透视,... 很多人使用云端 AI 时,都担心德普之星透视、内部资料上传带来隐私风险。这款本地运行的 AI 黑科技...
每日必看辅助挂!wpk有脚本吗... 很多人使用云端 AI 时,都担心德扑之星透视、内部资料上传带来隐私风险。这款本地运行的 AI 黑科技...
靠谱教程开挂!we poker... we poker游戏下AI 游戏攻略黑科技上线本地缓存功能,离线查阅能力开挂。提前下载对应游戏攻略数...
一分钟了解辅助器!wepoke... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...
最新通报辅助挂!wpk俱乐部是... 很多人使用云端 AI 时,都担心wpk俱乐部是真的吗、内部资料上传带来隐私风险。这款本地运行的 AI...