我有一个Vec
我想:
避免使用不安全的函数,如std::ptr::copy\u非重叠
使用库函数,而不用自己实现复制循环
我所尝试的:
#[test]
fn copy_within_a_vector() {
let mut data = vec![1, 2, 0, 0];
let src = &data[0..2];
let mut dst = &mut data[3..4];
dst.copy_from_slice(src);
}
这段代码甚至没有被编译,因为借用检查器抱怨同时借用可变和不可变的
数据
(这是正确的)。
是否可以重写代码以在稳定的环境下编译?
相关问题:
在Rust中高效写入多个字节
如注释中所说,使用split_at_mut
。然后可以使用clone_from_slice
。
实施示例:
// split the slice in two mutable slices
// then copy one subslice to other
fn copy_within_a_slice<T: Clone>(v: &mut [T], from: usize, to: usize, len: usize) {
if from > to {
let (dst, src) = v.split_at_mut(from);
dst[to..to + len].clone_from_slice(&src[..len]);
} else {
let (src, dst) = v.split_at_mut(to);
dst[..len].clone_from_slice(&src[from..from + len]);
}
}
fn main() {
let mut v = (0..10).collect::<Vec<_>>();
println!("{:?}", v);
copy_within_a_slice(&mut v, 6, 1, 3);
println!("{:?}", v);
}
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 6, 7, 8, 4, 5, 6, 7, 8, 9]
不要忘记注意这些值,因为如果超出范围,代码会死机。
错误:与“运算符”不匹配 我想同一个键和多个值,例如键是10值是2,3,4,但“*iter”是错误的..如何用c语言计算map,vector?
已移除。[重复] ........ ..
在C#中,我可以制作一个列表并向其添加不同类型的项。只要它们继承基类即可。例如: Rust不是面向对象编程语言,但我想知道是否可以实现类似的功能。有办法吗?
我有一张3D医学图像。我使用获取连接的体素组。它非常快。但我还想得到每个标签的体素数量。我使用以下代码获取每个值的编号(假设是之后的数组)。大约2分钟。 有没有什么高效的方式来高效的获取呢?
本文向大家介绍如何在R中创建具有重复值的向量?,包括了如何在R中创建具有重复值的向量?的使用技巧和注意事项,需要的朋友参考一下 有两种方法可以创建一个在R中具有重复值的向量,但是两种方法都有不同的方法,第一种方法是重复向量的每个元素,第二种方法将元素重复指定的次数。这两种方法都使用rep函数来创建向量。 示例 请看以下示例-
我使用了这段代码来随机化1000000个数字而不重复。这是我目前所掌握的。 这种方法太慢了,你能告诉我如何更有效地完成这项工作吗?我感谢所有答复。问候