将Vec 转换为Vec 当从From 可获得U时可用 ] >> [

问题描述 投票:2回答:1
我已经实现了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; ...

rust type-conversion traits
1个回答
1
投票
由于Extend::extend采用迭代器:
© www.soinside.com 2019 - 2024. All rights reserved.