Nol*_*rin 2 reference traits rust
我有一个foo实现特征的reference()IntoIterator<Item = &T>.我想into_iter直接调用trait方法foo(即引用本身)而不是*foo(引用的值),因为似乎正在发生,因为类型*foo也实现IntoIterator(尽管有Item = T).我尝试过UFCS,但即便如此也不行.
这是我的实际代码:
fn csl_join<'a, V, T>(value: &V) -> String
where V: IntoIterator<Item = &'a T>,
T: 'a + ToString
{
itertools::join(value.into_iter().map(|v: &T| v.to_string()), ",")
}
Run Code Online (Sandbox Code Playgroud)
感谢@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()), ",")
}
Run Code Online (Sandbox Code Playgroud)
我会留在这里以防万一它偶然帮助别人.