Types &引用;trait“的冲突实现;当你试图成为普通人的时候

Types &引用;trait“的冲突实现;当你试图成为普通人的时候,types,rust,Types,Rust,背景:我正在使用nalgebra库,我想创建一个表示多元正态分布的结构M是矩阵的类型,例如Mat4 我当前的尝试如下所示: 使用std::ops::Mul; 使用std::marker::PhantomData; 使用nalgebra::*; #[允许(非蛇形情况)] pub-struct Multivar代码的问题在于,代码中存在一致性冲突,并且,很可能任何修复它的尝试都会导致新的一致性冲突 Rust中的一致性规则有些复杂,但是,它们基于一个原则:可以为任意类型实现“您的”特征,也可以为“您的

背景:我正在使用
nalgebra
库,我想创建一个表示多元正态分布的结构
M
是矩阵的类型,例如
Mat4

我当前的尝试如下所示:

使用std::ops::Mul;
使用std::marker::PhantomData;
使用nalgebra::*;
#[允许(非蛇形情况)]

pub-struct Multivar代码的问题在于,代码中存在一致性冲突,并且,很可能任何修复它的尝试都会导致新的一致性冲突

Rust中的一致性规则有些复杂,但是,它们基于一个原则:可以为任意类型实现“您的”特征,也可以为“您的”类型实现任意特征。这听起来很简单,但当类型参数出现时,它就变得复杂了——事实证明,定义哪些类型是“您的”,哪些不是的方法不止一种

在这种特殊情况下,错误在于您直接为类型参数实现了一个外部特征:


impl MulDoes
SquareMat
N
V
提供类型,因此您可以创建类似于:
pub-struct multirplease提供一个,最重要的是,您的代码缺少
SquareMat
特性,错误消息引用了一个不显示的
MyStruct
类型。对于生锈的问题,如果您的错误可以在Playpen中重现,那么回答者最放心。请同时查看两个错误(,)的现有问题,并向我们解释您的问题不同的原因。否则,您可能会被标记为重复、关闭或得到一个无用的答案。