我正在尝试创建一个函数,它将两个迭代器作为参数并通过引用对项目进行迭代。每个Iterator
项目应执行PartialEq
。Rhs在关于PartialEq的编译器错误消息中引用了什么?
我第一次尝试是:
fn compute<T: Iterator>(first: T, second: T, len: usize) -> usize
where
T::Item: std::cmp::PartialEq,
{
// ...
}
这将编译但迭代(据我所知)没有被引用,但按价值计算,编译器会抱怨的举动时迭代。
我的第二次尝试是这样的:
fn compute<'a, T>(first: T, second: T, len: usize) -> usize
where
T: Iterator<Item = &'a std::cmp::PartialEq>,
{
//...
}
导致编译器错误:
error[E0393]: the type parameter `Rhs` must be explicitly specified
--> src/main.rs:3:28
|
3 | T: Iterator<Item = &'a std::cmp::PartialEq>,
| ^^^^^^^^^^^^^^^^^^^ missing reference to `Rhs`
|
= note: because of the default `Self` reference, type parameters must be specified on object types
什么的Rhs
(右手边?)编译器是针对此处的意思吗?为什么我需要参考它?如何将基于有限参考的Iterator
传递给函数?
不是每个迭代器都有它可以返回引用的项目。我想你需要展示你如何使用第一个'compute'和编译器错误;目前还不清楚为什么这样做不起作用。 – trentcl
当您在'Item ='之后编写'PartialEq'时,它在*类型上下文中*,因此它被解释为特征对象,而不是特征。 – Rufflewind
你是正确的缩写:LHS用于左手边和RHS右手边当谈论二元操作符时(我个人更喜欢把它们称为左和右,因为我不喜欢标识符不同的单个字母)。 –