Rust 如何将切片向量的各个元素与其他切片连接起来?

Rust 如何将切片向量的各个元素与其他切片连接起来?,rust,Rust,我有一个字节片start=[30u8;5]和middle=[40u8;3]和一个字节片向量: let first = [1u8; 10]; let second = [2u8; 10]; let third = [3u8; 10]; let elements: Vec<[u8; 10]> = vec![first, second, third]; 然而,尽管我可以在尝试附加向量元素时连接start和middle,但失败了。我知道我错误地尝试迭代向量的元素来连接,但我不知道如何正

我有一个字节片
start=[30u8;5]
middle=[40u8;3]
和一个字节片向量:

let first = [1u8; 10];
let second = [2u8; 10];
let third = [3u8; 10];

let elements: Vec<[u8; 10]> = vec![first, second, third]; 
然而,尽管我可以在尝试附加向量
元素时连接
start
middle
,但失败了。我知道我错误地尝试迭代向量的元素来连接,但我不知道如何正确地进行

fn main() {
    let start = [30u8; 5];
    let middle = [40u8; 4];
    let first = [1u8; 10];
    let second = [2u8; 10];
    let third = [3u8; 10];

    let elements: Vec<[u8; 10]> = vec![first, second, third];
    println!("{:?}", elements.iter());

    for key in elements.iter() {
        println!("{:?}", key.iter());
    }

    let alltogether: Vec<u8> = start
        .iter()
        .cloned()
        .chain(middle.iter().cloned())
        .chain(elements.iter().iter().cloned())
        .collect();

    println!("{:?}", alltogether);
}
fn main(){
让我们开始=[30u8;5];
设中间=[40u8;4];
让第一个=[1u8;10];
设秒=[2u8;10];
让第三个=[3u8;10];
让元素:Vec=Vec![第一、第二、第三];
println!(“{:?}”,elements.iter());
对于关键元素。iter(){
println!(“{:?}”,key.iter());
}
让我们一起:Vec=开始
.国际热核实验堆(iter)
.克隆()
.chain(中间.iter().clone())
.chain(elements.iter().iter().cloned())
.收集();
println!(“{:?}”,统称);
}
此示例可以复制粘贴到Rust Played中。

您可能需要:

let allowed:Vec=start
.国际热核实验堆(iter)
.克隆()
.chain(中间.iter().clone())
.chain(elements.iter().flatte().cloned())
.收集();
请注意,也有
复制的
(而不是
克隆的
),可用于
复制的
类型


如果
元素
中的内容本身没有实现
到迭代器
中,您可以使用
平面映射
指定如何将一个元素转换为迭代器。

您的问题可以用;;;的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将此问题标记为已回答。
.chain(elements.iter().flatte().copied())
?这是否回答了您的问题?我觉得这是一场更好的比赛<代码>[first,second,third].concat()适用于第一个示例是的,谢谢,这正是我要找的!关于平面地图的建议也是黄金!您也可以尝试类似于
[start,middle].chain(elements).flatte().cloned()
,但我没有启动并运行这个。
fn main() {
    let start = [30u8; 5];
    let middle = [40u8; 4];
    let first = [1u8; 10];
    let second = [2u8; 10];
    let third = [3u8; 10];

    let elements: Vec<[u8; 10]> = vec![first, second, third];
    println!("{:?}", elements.iter());

    for key in elements.iter() {
        println!("{:?}", key.iter());
    }

    let alltogether: Vec<u8> = start
        .iter()
        .cloned()
        .chain(middle.iter().cloned())
        .chain(elements.iter().iter().cloned())
        .collect();

    println!("{:?}", alltogether);
}
    let alltogether: Vec<u8> = start
        .iter()
        .cloned()
        .chain(middle.iter().cloned())
        .chain(elements.iter().flatten().cloned())
        .collect();