dha*_*ech 2 vector append sequence deprecated rust
当以下内容提交给编译器时
fn main()
{
let abc = vec![10u, 20u, 30u];
let bcd = vec![20u, 30u, 40u];
let cde = abc.append(bcd.as_slice());
println!("{}", cde);
}
Run Code Online (Sandbox Code Playgroud)
编译器发出以下警告:
不推荐使用此函数,而使用extend()
相同的外观如何使用extend?
看看签名extend:
fn extend<I: Iterator<T>>(&mut self, iterator: I)
Run Code Online (Sandbox Code Playgroud)
请注意,它通过可变引用获取self,并且它不需要切片而是迭代器(这是更通用的).
最终结果如下所示,然后:
abc.extend(bcd.into_iter());
Run Code Online (Sandbox Code Playgroud)
或这个:
abc.extend(bcd.iter().map(|&i| i))
Run Code Online (Sandbox Code Playgroud)
(请记住,Vec.iter()产生的东西会迭代引用而不是值,因此需要.map(|&i| i).)
我有点惊讶它推荐extend,push_all更直接的替代,采取切片而不是迭代器:
abc.push_all(bcd.as_slice());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |