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