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();