[英]How do I call a trait method on a reference and not the referenced value?
我有一個實現特征IntoIterator<Item = &T>
的引用( foo
)。 我想直接在foo
(即引用本身)而不是*foo
(引用的值)上調用trait方法into_iter
,這似乎正在發生,因為*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()), ",")
}
由於@LukasKalbertodt的有用評論,我在發布此問題后最終解決了該問題。 事實證明,我只是希望類型綁定為&V: IntoIterator<Item = &T>
,以匹配函數體中的預期用法(duh!)。
因此,代碼變為:
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()), ",")
}
我會把它留在這里,以防它偶然幫助別人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.