我在内存中有两个相邻的切片.我知道它们是相邻的,因为我刚刚从一个有split_at
个的切片创建了它们.我想将它们连接在一起,再次获得覆盖整个范围的切片.我有什么办法可以安全地做到这一点吗?理想情况下,某些函数会获取多个切片,查看它们是否彼此相邻,并在可能的情况下将它们合并在一起.
fn main() {
let original_slice: &[u8] = &[1, 2, 3, 4];
let (left, right) = original_slice.split_at(2);
let rejoined_slice = todo!("take left and right and return an Option or similar")
assert_eq!(original_slice, rejoined_slice);
assert_eq!(original_slice.as_ptr(), rejoined_slice.as_ptr());
}
接下来我将使用zerocopy
个 crate 执行一些零拷贝解析.有时,我会得到多个类型相同的切片,我知道它们彼此相邻(毕竟,我只是解析它们、判断它们的对齐等),将它们融合在一起会很有用.
不是this question的副本:我不想以一个新的Vec
结束,我想在不复制的情况下将已经相邻的切片融合在一起.