假设我有以下片段 (playground)
struct A {
pub val: u32
}
const GLOBAL_A: A = A {val: 2};
fn main() {
let some_a: A = GLOBAL_A;
let other_a: A = GLOBAL_A;
println!("double val = {}", some_a.val + other_a.val);
}
由于 A
既不是 Clone
也不是 Copy
,我会假设 GLOBAL_A
的值会被移动。这对于一个常量来说没有太多意义,而且正如所示它不能被移动两次。
考虑到 A
不是 Clone
或者 Copy
,有哪些规则可以使上面的代码片段能够工作呢?