我有一个实现特征foo
的引用(IntoIterator<Item = &T>
)。我想直接在into_iter
(即引用本身)而不是foo
(引用的值)上调用特征方法*foo
,因为似乎正在发生,因为{{1}的类型1}}也实现*foo
(尽管有IntoIterator
)。我已经尝试过UFCS了,但即便如此,似乎并没有做到这一点。
这是我的实际代码:
Item = T
答案 0 :(得分:5)
在发布之后我终于解决了这个问题,感谢@LukasKalbertodt的有用评论。事实证明,我只是希望类型绑定为&V: IntoIterator<Item = &T>
,以匹配函数体中的预期用法(呃!)。
所以代码变成:
fn csl_join<'a, 'b, V, T>(value: &'a V) -> String
where V: 'a,
&'a V: IntoIterator<Item = &'b T>,
T: ToString + 'b
{
itertools::join(value.into_iter().map(|v: &T| v.to_string()), ",")
}
如果它偶然帮助别人,我会把它留在这里。