From<T> for U
,并期望我可以用Vec<U>::extend
来调用Vec<T>
。相反,我得到了expected T, got U
。解决此问题的最惯用的方法是什么?struct U;
struct T;
impl From<T> for U {
fn from(_other: T) -> Self {
U
}
}
fn main() {
let mut v: Vec<U> = Vec::new();
let other: Vec<T> = Vec::new();
v.extend(other.into_iter());
}
error[E0271]: type mismatch resolving `<std::vec::IntoIter<T> as std::iter::IntoIterator>::Item == U`
--> src/main.rs:14:7
|
14 | v.extend(other.into_iter());
| ^^^^^^ expected struct `T`, found struct `U`
|
= note: expected type `T`
found type `U`
我为U实现了From,并期望我可以用Vec
来调用Vec :: extend。相反,我得到了预期的T,得到了U。解决此问题的最惯用的方法是什么? struct U; ...
Extend::extend
采用迭代器: