這裏是我想要達到一個人爲的例子:如何在Rust中編寫一個接受任何滿足特性的迭代器的函數?
trait Double {
fn get(&self) -> i32;
}
impl Double for i32 {
fn get(&self) -> i32 { self * 2 }
}
fn foo<'a, I: Iterator<Item = &'a Double>>(is: I) {
for i in is {
println!("{}", i.get());
}
}
fn main() {
let is = vec![1, 2, 3, 4];
foo(is.into_iter());
}
錯誤這裏說的「預期完整的變量,發現&Double
」。
我遇到了麻煩,因爲無處不在談論作爲特徵的迭代器。我試圖做甚至可能嗎?
啊不錯,所以這是靜態調度呀?我不想通過這樣做引入開銷。 –
@SamKellett是的,這是靜態調度(動態調度只有在看到'&MyTrait','&mut MyTrait'或'Box'時纔會使用) –