当以下内容提交给编译器时
fn main()
{
let abc = vec![10u, 20u, 30u];
let bcd = vec![20u, 30u, 40u];
let cde = abc.append(bcd.as_slice());
println!("{}", cde);
}
编译器发出以下警告:
不推荐使用此函数,而推荐使用extend()
等效的外观如何使用extend
?
看一下以下签名extend
:
fn extend<I: Iterator<T>>(&mut self, iterator: I)
请注意,它通过可变引用获取self,并且它不需要切片,而需要迭代器(这是更通用的)。
最终结果将如下所示:
abc.extend(bcd.into_iter());
或这个:
abc.extend(bcd.iter().map(|&i| i))
(请记住,Vec.iter()
产生的东西会遍历引用而不是值,因此需要.map(|&i| i)
。)
我有点惊讶,它是推荐extend
,因为push_all
是一个更直接的替代品,采取分片,而不是一个迭代器:
abc.push_all(bcd.as_slice());
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句