gpt4 book ai didi

arrays - 在 Rust 中复制数组并修改一个值

转载 作者:行者123 更新时间:2023-12-03 11:26:02 25 4
gpt4 key购买 nike

我有一个结构,它引用了一个 T 类型的数组:

pub struct myStruct<'a, T> {
pub data: &'a [T],
}

我想修改这个数组的一个元素并检查操作的结果。为此,我正在尝试复制数组、修改值并执行操作:

pub fn check_value(&self, data: &T, position: usize) -> bool {
if position >= self.data.len() {
return false;
}
let array_temp = Box::new(self.data);
array_temp[position] = *data;

return mycheck(array_temp);
}

我收到这个错误:

error[E0594]: cannot assign to `array_temp[_]` which is behind a `&` reference

我想知道如何复制数组并修改值,或者直接修改原始数组(数据)中的值并稍后恢复原始值。

这里有完整的代码需要编译

pub struct MyStruct<'a, T> {
pub data: &'a [T],
}

impl<'a, T> MyStruct<'a, T>
where
T: Copy,
{
fn mycheck(&self, myarray: &[T]) -> bool {
if myarray.len() > 0 {
return true;
} else {
return false;
}
}

pub fn check_value(&self, data: &T, position: usize) -> bool {
if position >= self.data.len() {
return false;
}
let array_temp = Box::new(self.data);
array_temp[position] = *data;
return self.mycheck(&array_temp);
}
}

fn main() {
println!("Hello World!");
}

最佳答案

您没有数组(其长度已知),但您有一个切片(其长度在编译时未知)。因此,您必须调整到动态长度。

您可能想使用 self.data.to_vec()而不是 Box::new(self.data)

to_vec 将值复制到新分配的具有足够容量的向量中。

关于arrays - 在 Rust 中复制数组并修改一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59070028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com