我希望对一个可变的[u8]数组进行一些操作。
在我的测试代码中,我有:
#[test]
fn test_swap_bytes() {
let input: &[u8] = b"abcdef";
let result: &mut[u8] = ?;
do_something(result);
assert_eq!(b"fedcba", result);
}
在这种情况下,我该如何轻松地获得可变的u8切片?问号应该填什么?
我希望对一个可变的[u8]数组进行一些操作。
在我的测试代码中,我有:
#[test]
fn test_swap_bytes() {
let input: &[u8] = b"abcdef";
let result: &mut[u8] = ?;
do_something(result);
assert_eq!(b"fedcba", result);
}
在这种情况下,我该如何轻松地获得可变的u8切片?问号应该填什么?
您可以利用二进制字面量在编译时知道其大小的事实。因此,您可以对其进行解引用并将其存储在堆栈上。任何let绑定也可以是可变的let绑定。
let mut input: [u8; 6] = *b"abcdef";
请参考PlayPen中的完整例子。
需要注意的是,没有必要指定类型,我只是为了清晰起见而展示了它。
to_owned()
方法:#[test]
fn test_swap_bytes() {
let input: &[u8] = b"abcdef";
let result: &mut[u8] = &mut input.to_owned();
do_something(result);
assert_eq!(b"fedcba", result);
}
Vec
),因为输入是不可变的。