gpt4 book ai didi

rust - 如何在 Rust 中连接两个切片?

转载 作者:行者123 更新时间:2023-11-29 07:42:53 25 4
gpt4 key购买 nike

我想从向量中取出第 x 个元素和最后一个元素并将它们连接起来。我有以下代码:

fn main() {
let v = (0u64 .. 10).collect::<Vec<_>>();
let l = v.len();
vec![v.iter().take(3), v.iter().skip(l-3)];
}

这给了我错误

error[E0308]: mismatched types
--> <anon>:4:28
|
4 | vec![v.iter().take(3), v.iter().skip(l-3)];
| ^^^^^^^^^^^^^^^^^^ expected struct `std::iter::Take`, found struct `std::iter::Skip`
<anon>:4:5: 4:48 note: in this expansion of vec! (defined in <std macros>)
|
= note: expected type `std::iter::Take<std::slice::Iter<'_, u64>>`
= note: found type `std::iter::Skip<std::slice::Iter<'_, u64>>`

如何获取 1、2、3、8、9、10vec?我正在使用 Rust 1.12。

最佳答案

只需使用 .concat()在一片片上:

fn main() {
let v = (0u64 .. 10).collect::<Vec<_>>();
let l = v.len();
let first_and_last = [&v[..3], &v[l - 3..]].concat();
println!("{:?}", first_and_last);
// The output is `[0, 1, 2, 7, 8, 9]`
}

这会创建一个新向量,并且它适用于任意数量的切片。

(Playground link)

关于rust - 如何在 Rust 中连接两个切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40154150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com