复制结构以传递给函数 - 此字段未实现“复制”
Copy a struct to pass to a function - this field does not implement `Copy`
这是我的结构:
#[derive(Copy, Clone)]
pub struct ArimaModel {
p: u8,
d: u8,
q: u8,
holdout_length: u16,
max_ar_lag: u8,
max_ma_lag: u8,
df_lags: u8,
time_series: Vec<f64>,
ar_lags: Vec<usize>,
}
我正在尝试将我的结构传递给多个函数。
这是我的错误:
error[E0204]: the trait `Copy` may not be implemented for this type
--> src/lib.rs:1:10
|
1 | #[derive(Copy, Clone)]
| ^^^^
...
10 | time_series: Vec<f64>,
| --------------------- this field does not implement `Copy`
11 | ar_lags: Vec<usize>,
| ------------------- this field does not implement `Copy`
如果类型实现 Copy
、"copies happen implicitly",即您不必明确声明要复制该值。因为 Vec
实现了 Drop
,它不能实现 Copy
,防止你在没有注意到的情况下不小心复制值。
因此,Vec
仅实现了 Clone
(如果包含的类型实现了 Clone
),因此您可以通过调用 Clone
.
同样,如果 ArimaModel
真的应该派生 Copy
或者如果你真的想派生 Clone
,你应该三思,这样你就必须明确声明你想要一个副本。
但是如果你只想将 ArimaModel
传递给不同的函数,你可能想借用它们(即传递 &ArimaModel
或 &mut ArimaModel
而不是 ArimaModel
)。
这是我的结构:
#[derive(Copy, Clone)]
pub struct ArimaModel {
p: u8,
d: u8,
q: u8,
holdout_length: u16,
max_ar_lag: u8,
max_ma_lag: u8,
df_lags: u8,
time_series: Vec<f64>,
ar_lags: Vec<usize>,
}
我正在尝试将我的结构传递给多个函数。
这是我的错误:
error[E0204]: the trait `Copy` may not be implemented for this type
--> src/lib.rs:1:10
|
1 | #[derive(Copy, Clone)]
| ^^^^
...
10 | time_series: Vec<f64>,
| --------------------- this field does not implement `Copy`
11 | ar_lags: Vec<usize>,
| ------------------- this field does not implement `Copy`
如果类型实现 Copy
、"copies happen implicitly",即您不必明确声明要复制该值。因为 Vec
实现了 Drop
,它不能实现 Copy
,防止你在没有注意到的情况下不小心复制值。
因此,Vec
仅实现了 Clone
(如果包含的类型实现了 Clone
),因此您可以通过调用 Clone
.
同样,如果 ArimaModel
真的应该派生 Copy
或者如果你真的想派生 Clone
,你应该三思,这样你就必须明确声明你想要一个副本。
但是如果你只想将 ArimaModel
传递给不同的函数,你可能想借用它们(即传递 &ArimaModel
或 &mut ArimaModel
而不是 ArimaModel
)。