获取给定 LHS 和 RHS 类型的 Add 实现的关联输出类型

Getting the associated Output type of an Add implementation given LHS and RHS types

在 Rust 中,是否有任何方法可以在类型级别通过使用 LHS(Self)和 RHS 类型调用 Add 实现,以便使用其 Output 类型(也就是说,泛型函数的 return 类型)?

有,虽然看起来有点黑魔法。

您需要组合 3 位语法:

  • 可以通过 <Type as Trait>
  • 访问类型的特征实现
  • 指定 RHS 只需将其作为参数传递即可 Add<???>
  • 最后获得特征的关联类型只需要使用 Trait::OutputType(可能有歧义)

将 3 个组合在一起我们得到 <Self as Add<RhsType>>::Output