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

llo*_*eta 5 traits generic-programming rust type-level-computation

在Rust中,有没有办法在类型级别Add通过使用LHS(Self)和RHS类型召唤一个实现来使用它的Output类型(例如,泛型函数的返回类型)?

Mat*_* M. 8

虽然它确实看起来像一些黑魔法.

您需要结合3位语法:

  • 一个类型的特征实现可以通过 <Type as Trait>
  • 指定RHS简单地要求将其作为参数传递Add<???>
  • 最后得到一个相关类型的特征只需要使用Trait::OutputType(可能是模棱两可的)

结合3我们得到<Self as Add<RhsType>>::Output.