首页 > 解决方案 > 有没有一种很好的方法来表示特征占位符类型的特征边界?

问题描述

今天,我编写了一个带有泛型和 TryFrom 特征的代码,如下所示。

fn foo<A, B, C>(a: A) -> B 
  where B: TryFrom<A, Error=C>,
        C: std::fmt::Debug,
{
  B::try_from(a).unwrap()
}

我可以编译这段代码。

但是,类型参数 C 让我觉得非常多余,我认为有更好的方法来表示上面的代码,如下所示。

fn foo<A, B>(a: A) -> B
  where B: TryFrom<A, Error = _ where std::fmt::Debug>
{
  B::try_from(a).unwrap()
}

但是,此代码被编译器拒绝。

有没有办法像第二个代码一样表示代码以删除浪费的类型参数?

标签: rust

解决方案


推荐阅读