Rust 我可以定义一个实现另一个特性的特性吗’;当已经有一个通用的实现来实现特性Im时,它的关联函数是什么?

Rust 我可以定义一个实现另一个特性的特性吗’;当已经有一个通用的实现来实现特性Im时,它的关联函数是什么?,rust,Rust,上下文:我正在使用一个外部板条箱,它定义了一个traitExternalTrait 乙二醇 pub trait ExternalTrait{ fn关联的_func()->i32; } 我有几种类型,它们对上述trait的实现几乎相同,只有一个值不同,因此我想定义我自己的trait实现外部trait,其中唯一需要的定义是不同的值 e、 g trait实现{ fn自定义_值()->i32; } 我尝试这样做的一种方法是 dyn My实现的impl ExternalTrait{ fn关联函数()-

上下文:我正在使用一个外部板条箱,它定义了一个trait
ExternalTrait
乙二醇

pub trait ExternalTrait{
fn关联的_func()->i32;
}
我有几种类型,它们对上述trait的实现几乎相同,只有一个值不同,因此我想定义我自己的trait实现外部trait,其中唯一需要的定义是不同的值

e、 g

trait实现{
fn自定义_值()->i32;
}
我尝试这样做的一种方法是

dyn My实现的impl ExternalTrait{ fn关联函数()->i32{ &Self::自定义_值() } } 它失败是因为具有关联函数的MyImplementation不是对象安全的

工作是什么

T的impl ExternalTrait
哪里
T:我的执行,
{
fn关联函数()->i32{
T::自定义_值()
}
}
这很好,除了我正在使用的外部板条箱已经有了这种特性的通用实现,如下所示:

impl i32{
10
}
}
这与我所定义的有冲突,这是可以理解的。所以问题是,除了使用宏之外,还有什么方法可以支持我的用例吗

干杯

e:附加上下文。以上只是我试图提出的一个最小的例子。我在实践中遇到的实际外部特征是,冲突的实现是。对于一个混凝土结构来说,可以很好地实现它,例如


impl GraphQLType for MyStruct

如何为任何类型实现
ExternalTrait
?trait的板条箱提供的毯子实现似乎涵盖了所有类型,大小和大小。只是定义一个
结构X和琐碎地为X实现
ExternalTrait
失败,实现冲突。(.)我的示例可能太小了,我添加了一些关于实际用例的附加信息。对最小示例进行了更改,使其与实际代码一致。如果我的更改不完全正确,请随意编辑它。我认为允许这样做的主要问题是,当您实现一个特性时,Rust必须检查每个特性的每个总体实现,以确保您没有创建冲突的总体实现。稍微相关的是,由于关联类型不同,关于已知不相交的特征的impl。这是有意义的,我的目的是想知道在这种情况下,是否有其他方法可以处理重复数据消除代码。不过,有一个是宏,它只是重量级的,我希望避免它