Я реализовал From<T> for U
и ожидал, что смогу вызвать Vec<U>::extend
с Vec<T>
. Вместо этого я получаю expected T, got U
. Какой самый идиоматический c способ исправить это?
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`