0
爲什麼當Cloned
預期DoubleEndedIterator<Item=&'a T>
但iter()
返回Iterator<T>
(而不是它所期望的Iterator<&T>
)時,下面的代碼工作?`Cloned`迭代器適配器如何與`Iterator <T>`一起使用?
use std::clone::Clone;
use std::iter::{Rev, Cloned};
use std::fmt::Debug;
fn reversed<'a, U, T>(iter: U) -> Rev<Cloned<U>>
where U: DoubleEndedIterator<Item=&'a T>,
T: 'a + Clone + Debug
{
iter.cloned().rev()
}
fn main() {
let v0 = (0..10).collect::<Vec<u32>>();
let mut v0r = v0.clone();
v0r.reverse();
assert_eq!(v0r, reversed(v0.iter()).collect::<Vec<_>>());
}
「具體來說,的std ::片T參數::國際核聚變實驗堆不同從T上扭轉宣佈」 這可能是在一般情況下,真正的當兩者之間沒有聯繫時,但我在'DoubleEndedIterator- '中說'Item =&'a T''的印象是鏈接了這些單獨的'T'。 無論如何感謝您的回覆,第二部分回答我的問題。 –